home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / fortran / toolpack.000 / toolpack / toolpack1.2 / access / YFLIB.MAC.f < prev    next >
Encoding:
Text File  |  1989-03-04  |  143.8 KB  |  3,669 lines

  1. C---------------------------------------------------------
  2. C    TOOLPACK/1    Release: 2.5
  3. C---------------------------------------------------------
  4. C---------------------------------------------------------
  5. C    TOOLPACK/1    Release: 2.5
  6. C---------------------------------------------------------
  7. C---------------------------------------------------------
  8. C    TOOLPACK/1    Release: 2.5
  9. C---------------------------------------------------------
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18. C                                   parameter length
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. C following are for ZYCSDT (Canonicalise Symbol Data Types)
  29. C ----------------------------------------------------------------------
  30. C
  31. C       Y D T Y P E   -   Output token stream for a data type
  32. C
  33.  
  34.         SUBROUTINE YDTYPE(DTYPE,CHRLEN,TKDESC)
  35.         INTEGER DTYPE,CHRLEN,TKDESC
  36.  
  37. C---------------------------------------------------------
  38. C    TOOLPACK/1    Release: 2.5
  39. C---------------------------------------------------------
  40. C
  41. C  TKLAST = LAST TOKEN NUMBER
  42. C
  43.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  44.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  45.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  46.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  47.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  48.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  49.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  50.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  51.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  52.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  53.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  54.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  55.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  56.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  57.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  58.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  59.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  60.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  61.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  62.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  63.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  64.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  65.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  66.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  67.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  68.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  69.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  70.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  71.  
  72.  
  73.         SAVE DUMMY
  74.  
  75.         INTEGER DUMMY(2)
  76.  
  77.         EXTERNAL ZTOKWR,ERROR
  78.  
  79.         DATA DUMMY(1)/129/
  80.  
  81.         IF (DTYPE.EQ.1) THEN
  82.             CALL ZTOKWR(TINTEG,0,DUMMY,TKDESC)
  83.         ELSE IF (DTYPE.EQ.2) THEN
  84.             CALL ZTOKWR(TREAL,0,DUMMY,TKDESC)
  85.         ELSE IF (DTYPE.EQ.5) THEN
  86.             CALL ZTOKWR(TDOUBL,0,DUMMY,TKDESC)
  87.         ELSE IF (DTYPE.EQ.4) THEN
  88.             CALL ZTOKWR(TCOMPL,0,DUMMY,TKDESC)
  89.         ELSE IF (DTYPE.EQ.3) THEN
  90.             CALL ZTOKWR(TLOGIC,0,DUMMY,TKDESC)
  91.         ELSE IF (DTYPE.EQ.6) THEN
  92.             CALL ZTOKWR(TCHARA,0,DUMMY,TKDESC)
  93.         ELSE IF (DTYPE.EQ.7) THEN
  94.             CALL ZTOKWR(TDCMPL,0,DUMMY,TKDESC)
  95.         ELSE
  96.             CALL ERROR('Invalid arguments to YDTYPE')
  97.         END IF
  98.         IF (CHRLEN.NE.0) CALL YCHLEN(CHRLEN,TKDESC)
  99.  
  100.         END
  101. C ----------------------------------------------------------------------
  102. C
  103. C       Y L E A F   -   Output the token for a leaf node
  104. C                       Leaf nodes are: all names and constants,
  105. C                                       and the "asterisk" node.
  106. C
  107.  
  108.         SUBROUTINE YLEAF(NODE,TKDESC)
  109.         INTEGER NODE,TKDESC
  110.  
  111. C---------------------------------------------------------
  112. C    TOOLPACK/1    Release: 2.5
  113. C---------------------------------------------------------
  114. C
  115. C  TKLAST = LAST TOKEN NUMBER
  116. C
  117.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  118.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  119.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  120.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  121.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  122.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  123.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  124.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  125.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  126.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  127.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  128.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  129.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  130.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  131.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  132.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  133.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  134.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  135.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  136.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  137.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  138.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  139.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  140.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  141.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  142.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  143.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  144.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  145.  
  146. C---------------------------------------------------------
  147. C    TOOLPACK/1    Release: 2.5
  148. C---------------------------------------------------------
  149.         COMMON/XCSYMS/MODFLG,NSYMS,NPUS,PUIDX,SYMBOL
  150.         INTEGER NSYMS,NPUS,PUIDX(250),
  151.      +          SYMBOL(8,5003)
  152.         LOGICAL MODFLG
  153.  
  154.         SAVE /XCSYMS/
  155. C---------------------------------------------------------
  156. C    TOOLPACK/1    Release: 2.5
  157. C---------------------------------------------------------
  158.         COMMON/XCSTRI/STRTXT,STRTBL,NSTRNG,TXTTOP
  159.         INTEGER STRTXT(46339),STRTBL(7103),NSTRNG,TXTTOP
  160.  
  161.         SAVE /XCSTRI/
  162.  
  163.  
  164.         SAVE ERRTXT,ENDTXT
  165.  
  166.         INTEGER TEXT(1322),TOKTYP,NODTYP,ERRTXT(4),ENDTXT(4),
  167.      +          TXTPTR
  168.  
  169.         INTEGER LENGTH,EQUAL
  170.         EXTERNAL LENGTH,ZTOKWR,ERROR,ZPTINT,ZCHOUT,EQUAL,ZTOCAP,SCOPY,
  171.      +           ZMESS
  172.  
  173. C---------------------------------------------------------
  174. C    TOOLPACK/1    Release: 2.5
  175. C---------------------------------------------------------
  176. C
  177. C Common block and access functions for YP parse tree
  178. C
  179. C---------------------------------------------------------
  180. C    TOOLPACK/1    Release: 2.5
  181. C---------------------------------------------------------
  182.         COMMON/XCTREE/ROOT,TREE,TRETOP
  183.         INTEGER ROOT,TREE(4,46339),TRETOP
  184.  
  185.         SAVE /XCTREE/
  186. C Use "JABC12" to try to avoid conflicts with ordinary variables
  187.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  188.  
  189.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  190.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  191.         UP(JABC12)=(TREE(1,JABC12)/46340)
  192.         DOWN(JABC12)=TREE(2,JABC12)
  193.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  194.         NATTR(JABC12)=TREE(4,JABC12)
  195.  
  196.         DATA ERRTXT/69,82,82,129/,ENDTXT/69,78,68,129/
  197.  
  198.         NODTYP=NTYPE(NODE)
  199.         IF (NODTYP.EQ.108 .OR. NODTYP.EQ.115 .OR.
  200.      +      NODTYP.EQ.116 .OR. NODTYP.EQ.40) THEN
  201.             TEXT(1)=129
  202.             IF (NODTYP.EQ.40)
  203.      +          CALL ZTOKWR(TSLASH,0,TEXT,TKDESC)
  204.             TXTPTR=SYMBOL(2,-DOWN(NODE))
  205.             IF (NODTYP.EQ.108 .OR. NODTYP.EQ.40) THEN
  206.                 TOKTYP=TNAME
  207.             ELSE
  208.                 TOKTYP=TDCNST
  209.             END IF
  210.         ELSE IF (NODTYP.EQ.17) THEN
  211.             TOKTYP=TSTAR
  212.             TEXT(1)=129
  213.             TXTPTR=0
  214.         ELSE
  215.             TXTPTR=-DOWN(NODE)
  216.             IF (NODTYP.EQ.107) THEN
  217.                 TOKTYP=TDCNST
  218.             ELSE IF (NODTYP.EQ.110) THEN
  219.                 TOKTYP=TRCNST
  220.             ELSE IF (NODTYP.EQ.111) THEN
  221.                 TOKTYP=TPCNST
  222.             ELSE IF (NODTYP.EQ.109) THEN
  223.                 TOKTYP=TLCNST
  224.             ELSE IF (NODTYP.EQ.114) THEN
  225.                 TOKTYP=TCCNST
  226.             ELSE IF (NODTYP.EQ.113) THEN
  227.                 TOKTYP=THCNST
  228.             ELSE IF (NODTYP.EQ.120) THEN
  229.                 TOKTYP=TNAME
  230.             ELSE IF (NODTYP.EQ.118) THEN
  231.                 CALL SCOPY(STRTXT,TXTPTR,TEXT,1)
  232.                 CALL ZTOCAP(TEXT)
  233.                 IF (EQUAL(TEXT,ENDTXT).EQ.-2) THEN
  234.                     TOKTYP=TENDKD
  235.                 ELSE IF (EQUAL(TEXT,ERRTXT).EQ.-2) THEN
  236.                     TOKTYP=TERRKD
  237.                 ELSE
  238.                     TOKTYP=TNAME
  239.                 END IF
  240.             ELSE
  241.                 CALL ZCHOUT('YLEAF: Invalid leaf node (Number ',2)
  242.                 CALL ZPTINT(NODE,1,2)
  243.                 CALL ZCHOUT(',type ',2)
  244.                 CALL ZPTINT(NODTYP,1,2)
  245.                 CALL ZMESS(')',2)
  246.                 CALL ERROR('PROGRAM ABORTED')
  247.             END IF
  248.         END IF
  249.         IF (TXTPTR.NE.0) THEN
  250.             CALL ZTOKWR(TOKTYP,LENGTH(STRTXT(TXTPTR)),STRTXT(TXTPTR),
  251.      +                  TKDESC)
  252.         ELSE
  253.             CALL ZTOKWR(TOKTYP,LENGTH(TEXT),TEXT,TKDESC)
  254.         END IF
  255.         IF (NODTYP.EQ.40) THEN
  256.             TEXT(1)=129
  257.             CALL ZTOKWR(TSLASH,0,TEXT,TKDESC)
  258.         END IF
  259.  
  260.         END
  261. C ----------------------------------------------------------------------
  262. C
  263. C       Y A R E L M   -   Output token stream for an array_element_name
  264. C
  265.  
  266.         SUBROUTINE YARELM(NODE,TKDESC)
  267.         INTEGER NODE,TKDESC
  268.  
  269. C---------------------------------------------------------
  270. C    TOOLPACK/1    Release: 2.5
  271. C---------------------------------------------------------
  272. C
  273. C  TKLAST = LAST TOKEN NUMBER
  274. C
  275.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  276.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  277.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  278.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  279.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  280.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  281.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  282.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  283.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  284.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  285.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  286.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  287.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  288.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  289.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  290.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  291.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  292.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  293.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  294.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  295.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  296.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  297.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  298.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  299.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  300.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  301.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  302.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  303.  
  304.  
  305.         SAVE DUMMY
  306.  
  307.         INTEGER PTR,DUMMY(2)
  308.  
  309.         EXTERNAL ZTOKWR
  310.  
  311. C---------------------------------------------------------
  312. C    TOOLPACK/1    Release: 2.5
  313. C---------------------------------------------------------
  314. C
  315. C Common block and access functions for YP parse tree
  316. C
  317. C---------------------------------------------------------
  318. C    TOOLPACK/1    Release: 2.5
  319. C---------------------------------------------------------
  320.         COMMON/XCTREE/ROOT,TREE,TRETOP
  321.         INTEGER ROOT,TREE(4,46339),TRETOP
  322.  
  323.         SAVE /XCTREE/
  324. C Use "JABC12" to try to avoid conflicts with ordinary variables
  325.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  326.  
  327.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  328.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  329.         UP(JABC12)=(TREE(1,JABC12)/46340)
  330.         DOWN(JABC12)=TREE(2,JABC12)
  331.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  332.         NATTR(JABC12)=TREE(4,JABC12)
  333.  
  334.         DATA DUMMY(1)/129/
  335.  
  336.         PTR=DOWN(NODE)
  337.         CALL YLEAF(PTR,TKDESC)
  338.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  339.         PTR=NEXT(PTR)
  340.  
  341.  100    CALL YEXPR(PTR,TKDESC)
  342.         PTR=NEXT(PTR)
  343.         IF (PTR.GT.0) THEN
  344.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  345.             GOTO 100
  346.         END IF
  347.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  348.  
  349.         END
  350. C ----------------------------------------------------------------------
  351. C
  352. C       Y S U B S T   -   Output token stream for a substring_name
  353. C
  354.  
  355.         SUBROUTINE YSUBST(NODE,TKDESC)
  356.         INTEGER NODE,TKDESC
  357.  
  358. C---------------------------------------------------------
  359. C    TOOLPACK/1    Release: 2.5
  360. C---------------------------------------------------------
  361. C
  362. C  TKLAST = LAST TOKEN NUMBER
  363. C
  364.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  365.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  366.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  367.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  368.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  369.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  370.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  371.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  372.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  373.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  374.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  375.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  376.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  377.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  378.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  379.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  380.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  381.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  382.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  383.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  384.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  385.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  386.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  387.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  388.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  389.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  390.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  391.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  392.  
  393.  
  394.         SAVE DUMMY
  395.  
  396.         INTEGER PTR,DUMMY(2)
  397.  
  398.         EXTERNAL ZTOKWR
  399.  
  400. C---------------------------------------------------------
  401. C    TOOLPACK/1    Release: 2.5
  402. C---------------------------------------------------------
  403. C
  404. C Common block and access functions for YP parse tree
  405. C
  406. C---------------------------------------------------------
  407. C    TOOLPACK/1    Release: 2.5
  408. C---------------------------------------------------------
  409.         COMMON/XCTREE/ROOT,TREE,TRETOP
  410.         INTEGER ROOT,TREE(4,46339),TRETOP
  411.  
  412.         SAVE /XCTREE/
  413. C Use "JABC12" to try to avoid conflicts with ordinary variables
  414.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  415.  
  416.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  417.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  418.         UP(JABC12)=(TREE(1,JABC12)/46340)
  419.         DOWN(JABC12)=TREE(2,JABC12)
  420.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  421.         NATTR(JABC12)=TREE(4,JABC12)
  422.  
  423.         DATA DUMMY(1)/129/
  424.  
  425.         PTR=DOWN(NODE)
  426.         IF (NTYPE(PTR).EQ.108) THEN
  427.             CALL YLEAF(PTR,TKDESC)
  428.         ELSE
  429.             CALL YARELM(PTR,TKDESC)
  430.         END IF
  431.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  432.         PTR=DOWN(NEXT(PTR))
  433.         IF (NTYPE(PTR).NE.106) THEN
  434.             CALL YEXPR(PTR,TKDESC)
  435.         END IF
  436.         CALL ZTOKWR(TCOLON,0,DUMMY,TKDESC)
  437.         PTR=NEXT(PTR)
  438.         IF (NTYPE(PTR).NE.106) THEN
  439.             CALL YEXPR(PTR,TKDESC)
  440.         END IF
  441.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  442.  
  443.         END
  444. C ----------------------------------------------------------------------
  445. C
  446. C       Y A R D C L   -   Output token stream for an array_declarator
  447. C                         (when the name has already been output -
  448. C                          so we should be passed the first array
  449. C                          dimension).
  450. C
  451.  
  452.         SUBROUTINE YARDCL(NODE,TKDESC)
  453.         INTEGER NODE,TKDESC
  454.  
  455. C---------------------------------------------------------
  456. C    TOOLPACK/1    Release: 2.5
  457. C---------------------------------------------------------
  458. C
  459. C  TKLAST = LAST TOKEN NUMBER
  460. C
  461.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  462.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  463.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  464.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  465.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  466.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  467.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  468.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  469.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  470.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  471.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  472.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  473.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  474.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  475.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  476.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  477.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  478.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  479.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  480.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  481.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  482.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  483.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  484.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  485.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  486.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  487.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  488.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  489.  
  490.  
  491.         SAVE DUMMY
  492.  
  493.         INTEGER PTR,PTR2,DUMMY(2)
  494.  
  495.         EXTERNAL ZTOKWR
  496.  
  497. C---------------------------------------------------------
  498. C    TOOLPACK/1    Release: 2.5
  499. C---------------------------------------------------------
  500. C
  501. C Common block and access functions for YP parse tree
  502. C
  503. C---------------------------------------------------------
  504. C    TOOLPACK/1    Release: 2.5
  505. C---------------------------------------------------------
  506.         COMMON/XCTREE/ROOT,TREE,TRETOP
  507.         INTEGER ROOT,TREE(4,46339),TRETOP
  508.  
  509.         SAVE /XCTREE/
  510. C Use "JABC12" to try to avoid conflicts with ordinary variables
  511.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  512.  
  513.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  514.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  515.         UP(JABC12)=(TREE(1,JABC12)/46340)
  516.         DOWN(JABC12)=TREE(2,JABC12)
  517.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  518.         NATTR(JABC12)=TREE(4,JABC12)
  519.  
  520.         DATA DUMMY(1)/129/
  521.  
  522.         PTR=NODE
  523.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  524.  
  525. C Loop Invariant: PTR -> a N_ARDIM node (and zero at end)
  526.  
  527.  100    IF (NTYPE(PTR).EQ.23) THEN
  528.           PTR2=DOWN(PTR)
  529.           IF (PTR2.EQ.0) THEN
  530.             CALL ZTOKWR(TSTAR,0,DUMMY,TKDESC)
  531.           ELSE
  532. C Output lower dimension  expression
  533.             CALL YEXPR(PTR2,TKDESC)
  534.             CALL ZTOKWR(TCOLON,0,DUMMY,TKDESC)
  535. C Upper dimension is *
  536.             CALL ZTOKWR(TSTAR,0,DUMMY,TKDESC)
  537.           ENDIF
  538.         ELSE
  539. C Output 1st of array dimension bounds
  540.             PTR2=DOWN(PTR)
  541.             CALL YEXPR(PTR2,TKDESC)
  542.             PTR2=NEXT(PTR2)
  543. C Output 2nd if any
  544.             IF (PTR2.NE.0) THEN
  545.                 CALL ZTOKWR(TCOLON,0,DUMMY,TKDESC)
  546.                 CALL YEXPR(PTR2,TKDESC)
  547.             END IF
  548.         END IF
  549. C Advance to next array dimension
  550.         PTR=NEXT(PTR)
  551.         IF (PTR.NE.0) THEN
  552.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  553.             GOTO 100
  554.         END IF
  555.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  556.  
  557.         END
  558. C ----------------------------------------------------------------------
  559. C
  560. C       Y C H L E N   -   Output a len_specification
  561. C
  562.  
  563.         SUBROUTINE YCHLEN(CHRLEN,TKDESC)
  564.         INTEGER CHRLEN,TKDESC
  565.  
  566. C---------------------------------------------------------
  567. C    TOOLPACK/1    Release: 2.5
  568. C---------------------------------------------------------
  569. C
  570. C  TKLAST = LAST TOKEN NUMBER
  571. C
  572.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  573.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  574.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  575.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  576.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  577.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  578.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  579.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  580.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  581.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  582.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  583.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  584.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  585.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  586.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  587.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  588.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  589.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  590.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  591.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  592.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  593.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  594.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  595.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  596.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  597.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  598.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  599.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  600.  
  601.  
  602.         SAVE DUMMY
  603.  
  604.         INTEGER DUMMY(2),STRING(12),LGTH
  605.  
  606.         INTEGER ITOC
  607.         EXTERNAL ZTOKWR,ITOC
  608.  
  609. C---------------------------------------------------------
  610. C    TOOLPACK/1    Release: 2.5
  611. C---------------------------------------------------------
  612. C
  613. C Common block and access functions for YP parse tree
  614. C
  615. C---------------------------------------------------------
  616. C    TOOLPACK/1    Release: 2.5
  617. C---------------------------------------------------------
  618.         COMMON/XCTREE/ROOT,TREE,TRETOP
  619.         INTEGER ROOT,TREE(4,46339),TRETOP
  620.  
  621.         SAVE /XCTREE/
  622. C Use "JABC12" to try to avoid conflicts with ordinary variables
  623.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  624.  
  625.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  626.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  627.         UP(JABC12)=(TREE(1,JABC12)/46340)
  628.         DOWN(JABC12)=TREE(2,JABC12)
  629.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  630.         NATTR(JABC12)=TREE(4,JABC12)
  631.  
  632.         DATA DUMMY(1)/129/
  633.  
  634.         CALL ZTOKWR(TSTAR,0,DUMMY,TKDESC)
  635.         IF (CHRLEN.GT.0) THEN
  636.             LGTH=ITOC(CHRLEN,STRING,11)
  637.             CALL ZTOKWR(TDCNST,LGTH,STRING,TKDESC)
  638.         ELSE IF (NTYPE(-CHRLEN).EQ.17) THEN
  639.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  640.             CALL ZTOKWR(TSTAR,0,DUMMY,TKDESC)
  641.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  642.         ELSE
  643.             CALL YEXPR(-CHRLEN,TKDESC)
  644.         END IF
  645.  
  646.         END
  647. C ----------------------------------------------------------------------
  648. C
  649. C       Y E X P R   -   Output an expression
  650. C
  651.  
  652.         SUBROUTINE YEXPR(NODE,TKDESC)
  653.         INTEGER NODE,TKDESC
  654.  
  655. C---------------------------------------------------------
  656. C    TOOLPACK/1    Release: 2.5
  657. C---------------------------------------------------------
  658. C
  659. C  TKLAST = LAST TOKEN NUMBER
  660. C
  661.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  662.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  663.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  664.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  665.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  666.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  667.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  668.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  669.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  670.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  671.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  672.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  673.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  674.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  675.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  676.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  677.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  678.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  679.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  680.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  681.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  682.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  683.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  684.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  685.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  686.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  687.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  688.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  689.  
  690.  
  691.         SAVE DUMMY
  692.  
  693.         INTEGER PTR,DUMMY(2),UPX,DOWNX,NODTYP,NEXTX,UPTYPE
  694.  
  695.         EXTERNAL ZTOKWR
  696.  
  697. C---------------------------------------------------------
  698. C    TOOLPACK/1    Release: 2.5
  699. C---------------------------------------------------------
  700. C
  701. C Common block and access functions for YP parse tree
  702. C
  703. C---------------------------------------------------------
  704. C    TOOLPACK/1    Release: 2.5
  705. C---------------------------------------------------------
  706.         COMMON/XCTREE/ROOT,TREE,TRETOP
  707.         INTEGER ROOT,TREE(4,46339),TRETOP
  708.  
  709.         SAVE /XCTREE/
  710. C Use "JABC12" to try to avoid conflicts with ordinary variables
  711.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  712.  
  713.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  714.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  715.         UP(JABC12)=(TREE(1,JABC12)/46340)
  716.         DOWN(JABC12)=TREE(2,JABC12)
  717.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  718.         NATTR(JABC12)=TREE(4,JABC12)
  719.  
  720.         DATA DUMMY(1)/129/
  721.  
  722.         PTR=NODE
  723.  
  724. C
  725. C Going down
  726. C
  727.  100    DOWNX=DOWN(PTR)
  728.         NODTYP=NTYPE(PTR)
  729.         IF (DOWNX.LE.0) THEN
  730.             IF (NODTYP.NE.106) CALL YLEAF(PTR,TKDESC)
  731.             GOTO 1000
  732.         END IF
  733.         IF (NODTYP.EQ.97) THEN
  734.             CALL ZTOKWR(TPLUS,0,DUMMY,TKDESC)
  735.         ELSE IF (NODTYP.EQ.46) THEN
  736.             CALL ZTOKWR(TMINUS,0,DUMMY,TKDESC)
  737.         ELSE IF (NODTYP.EQ.101 .OR. NODTYP.EQ.102) THEN
  738.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  739.         ELSE IF (NODTYP.EQ.88) THEN
  740.             CALL ZTOKWR(TNOT,0,DUMMY,TKDESC)
  741.         END IF
  742.         PTR=DOWNX
  743.         GOTO 100
  744. C
  745. C Going up (or next if this isn't the last)
  746. C
  747.  1000   IF (PTR.EQ.NODE) RETURN
  748.         UPX=UP(PTR)
  749.         UPTYPE=NTYPE(UPX)
  750.         IF (UPTYPE.EQ.101) THEN
  751.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  752.             PTR=UPX
  753.             GOTO 1000
  754.         ELSE IF (UPTYPE.EQ.97 .OR. UPTYPE.EQ.46 .OR.
  755.      +           UPTYPE.EQ.88) THEN
  756.             PTR=UPX
  757.             GOTO 1000
  758.         END IF
  759.         NEXTX=NEXT(PTR)
  760.         IF (NEXTX.EQ.0) THEN
  761.             IF (UPTYPE.EQ.119 .OR. UPTYPE.EQ.104 .OR.
  762.      +          UPTYPE.EQ.102 .OR. UPTYPE.EQ.105) THEN
  763. C Check for special case of no list (N_FUNREF only)
  764.                 IF (DOWN(UPX).EQ.PTR)
  765.      +              CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  766.                 CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  767.             END IF
  768.             PTR=UPX
  769.             GOTO 1000
  770.         END IF
  771. C NEXTX.NE.0
  772.         IF (UPTYPE.EQ.95) THEN
  773.             CALL ZTOKWR(TPLUS,0,DUMMY,TKDESC)
  774.         ELSE IF (UPTYPE.EQ.96) THEN
  775.             CALL ZTOKWR(TMINUS,0,DUMMY,TKDESC)
  776.         ELSE IF (UPTYPE.EQ.98) THEN
  777.             CALL ZTOKWR(TSTAR,0,DUMMY,TKDESC)
  778.         ELSE IF (UPTYPE.EQ.99) THEN
  779.             CALL ZTOKWR(TSLASH,0,DUMMY,TKDESC)
  780.         ELSE IF (UPTYPE.EQ.100) THEN
  781.             CALL ZTOKWR(TDSTAR,0,DUMMY,TKDESC)
  782.         ELSE IF (UPTYPE.EQ.102) THEN
  783.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  784.         ELSE IF (UPTYPE.EQ.84) THEN
  785.             CALL ZTOKWR(TEQV,0,DUMMY,TKDESC)
  786.         ELSE IF (UPTYPE.EQ.85) THEN
  787.             CALL ZTOKWR(TNEQV,0,DUMMY,TKDESC)
  788.         ELSE IF (UPTYPE.EQ.87) THEN
  789.             CALL ZTOKWR(TAND,0,DUMMY,TKDESC)
  790.         ELSE IF (UPTYPE.EQ.86) THEN
  791.             CALL ZTOKWR(TOR,0,DUMMY,TKDESC)
  792.         ELSE IF (UPTYPE.EQ.70) THEN
  793.             CALL ZTOKWR(TCNCAT,0,DUMMY,TKDESC)
  794.         ELSE IF (UPTYPE.EQ.90) THEN
  795.             CALL ZTOKWR(TLE,0,DUMMY,TKDESC)
  796.         ELSE IF (UPTYPE.EQ.89) THEN
  797.             CALL ZTOKWR(TLT,0,DUMMY,TKDESC)
  798.         ELSE IF (UPTYPE.EQ.93) THEN
  799.             CALL ZTOKWR(TGT,0,DUMMY,TKDESC)
  800.         ELSE IF (UPTYPE.EQ.94) THEN
  801.             CALL ZTOKWR(TGE,0,DUMMY,TKDESC)
  802.         ELSE IF (UPTYPE.EQ.91) THEN
  803.             CALL ZTOKWR(TEQ,0,DUMMY,TKDESC)
  804.         ELSE IF (UPTYPE.EQ.92) THEN
  805.             CALL ZTOKWR(TNE,0,DUMMY,TKDESC)
  806.         ELSE IF (UPTYPE.EQ.105) THEN
  807.             CALL ZTOKWR(TCOLON,0,DUMMY,TKDESC)
  808.         ELSE
  809. C Must be N_ARELM or N_FUNREF or N_SUBSTR
  810.             IF (DOWN(UPX).EQ.PTR) THEN
  811.                 CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  812.             ELSE
  813.                 CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  814.             END IF
  815.         END IF
  816.         PTR=NEXTX
  817.         GOTO 100
  818.  
  819.         END
  820. C ----------------------------------------------------------------------
  821. C
  822. C       Y S T M T   -   Output a statement
  823. C
  824.  
  825.         SUBROUTINE YSTMT(NODE,TKDESC)
  826.         INTEGER NODE,TKDESC
  827.  
  828.         INTEGER STYPE,PTR,DUMMY(2)
  829.  
  830. C---------------------------------------------------------
  831. C    TOOLPACK/1    Release: 2.5
  832. C---------------------------------------------------------
  833. C
  834. C  TKLAST = LAST TOKEN NUMBER
  835. C
  836.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  837.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  838.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  839.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  840.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  841.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  842.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  843.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  844.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  845.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  846.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  847.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  848.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  849.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  850.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  851.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  852.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  853.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  854.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  855.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  856.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  857.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  858.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  859.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  860.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  861.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  862.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  863.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  864.  
  865.  
  866.         SAVE DUMMY
  867.  
  868.         EXTERNAL ZTOKWR,YLIST,YLEAF,YITEM,ERROR
  869.  
  870. C---------------------------------------------------------
  871. C    TOOLPACK/1    Release: 2.5
  872. C---------------------------------------------------------
  873. C
  874. C Common block and access functions for YP parse tree
  875. C
  876. C---------------------------------------------------------
  877. C    TOOLPACK/1    Release: 2.5
  878. C---------------------------------------------------------
  879.         COMMON/XCTREE/ROOT,TREE,TRETOP
  880.         INTEGER ROOT,TREE(4,46339),TRETOP
  881.  
  882.         SAVE /XCTREE/
  883. C Use "JABC12" to try to avoid conflicts with ordinary variables
  884.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  885.  
  886.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  887.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  888.         UP(JABC12)=(TREE(1,JABC12)/46340)
  889.         DOWN(JABC12)=TREE(2,JABC12)
  890.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  891.         NATTR(JABC12)=TREE(4,JABC12)
  892.  
  893.         DATA DUMMY(1)/129/
  894.  
  895.         PTR=NODE
  896.  100    STYPE=NTYPE(PTR)
  897.         PTR=DOWN(PTR)
  898.         IF (PTR.NE.0) THEN
  899.             IF (NTYPE(PTR).EQ.115) THEN
  900.                 CALL YLEAF(PTR,TKDESC)
  901.                 PTR=NEXT(PTR)
  902.             END IF
  903.         END IF
  904.  
  905.         IF (STYPE.EQ.35) THEN
  906.             CALL XYPARA(PTR,TKDESC)
  907.         ELSE IF (STYPE.EQ.82) THEN
  908.             CALL XYCALL(PTR,TKDESC)
  909.         ELSE IF (STYPE.EQ.83) THEN
  910.             CALL XYRETU(PTR,TKDESC)
  911.         ELSE IF (STYPE.EQ.78) THEN
  912.             CALL XYFRMT(PTR,TKDESC)
  913.         ELSE IF (STYPE.EQ.20) THEN
  914.             CALL ZTOKWR(TDIMEN,0,DUMMY,TKDESC)
  915.             CALL YLIST(YITEM,PTR,TKDESC)
  916.         ELSE IF (STYPE.EQ.26) THEN
  917.             CALL XYCMMN(PTR,TKDESC)
  918.         ELSE IF (STYPE.EQ.24) THEN
  919.             CALL XYEQVL(PTR,TKDESC)
  920.         ELSE IF (STYPE.EQ.30) THEN
  921.             CALL YTYPE(PTR,TKDESC)
  922.             CALL YLIST(YITEM,NEXT(PTR),TKDESC)
  923.         ELSE IF (STYPE.EQ.61) THEN
  924.             CALL XYDO(PTR,TKDESC)
  925.         ELSE IF (STYPE.EQ.49) THEN
  926.             CALL XYASGN(PTR,TKDESC)
  927.         ELSE IF (STYPE.EQ.32) THEN
  928.             CALL XYIMPL(PTR,TKDESC)
  929.         ELSE IF (STYPE.EQ.37) THEN
  930.             CALL ZTOKWR(TEXTER,0,DUMMY,TKDESC)
  931.             CALL YLIST(YLEAF,PTR,TKDESC)
  932.         ELSE IF (STYPE.EQ.38) THEN
  933.             CALL ZTOKWR(TINTRI,0,DUMMY,TKDESC)
  934.             CALL YLIST(YLEAF,PTR,TKDESC)
  935.         ELSE IF (STYPE.EQ.39) THEN
  936.             CALL ZTOKWR(TSAVE,0,DUMMY,TKDESC)
  937.             IF (PTR.NE.0) CALL YLIST(YLEAF,PTR,TKDESC)
  938.         ELSE IF (STYPE.EQ.41) THEN
  939.             CALL XYDATA(PTR,TKDESC)
  940.         ELSE IF (STYPE.EQ.51) THEN
  941.             CALL ZTOKWR(TGOTO,0,DUMMY,TKDESC)
  942.             CALL YLEAF(PTR,TKDESC)
  943.         ELSE IF (STYPE.EQ.52) THEN
  944.             CALL XYCMGO(PTR,TKDESC)
  945.         ELSE IF (STYPE.EQ.53) THEN
  946.             CALL XYASGO(PTR,TKDESC)
  947.         ELSE IF (STYPE.EQ.57 .OR. STYPE.EQ.55 .OR.
  948.      +           STYPE.EQ.58) THEN
  949.             CALL XYIF(PTR,TKDESC)
  950.         ELSE IF (STYPE.EQ.56) THEN
  951.             CALL ZTOKWR(TIF,0,DUMMY,TKDESC)
  952.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  953.             CALL YEXPR(PTR,TKDESC)
  954.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  955.             PTR=NEXT(PTR)
  956.             GO TO 100
  957.         ELSE IF (STYPE.EQ.60) THEN
  958.             CALL ZTOKWR(TENDIF,0,DUMMY,TKDESC)
  959.         ELSE IF (STYPE.EQ.62) THEN
  960.             CALL ZTOKWR(TCONTI,0,DUMMY,TKDESC)
  961.         ELSE IF (STYPE.EQ.6) THEN
  962.             CALL ZTOKWR(TEND,0,DUMMY,TKDESC)
  963.         ELSE
  964.             GO TO 2000
  965.         ENDIF
  966.         GO TO 1000
  967. C
  968. C  AVOID IBM LIMIT ON ELSE-IF BLOCKS
  969. C
  970.  2000   CONTINUE
  971.         IF (STYPE.EQ.59) THEN
  972.             CALL ZTOKWR(TELSE,0,DUMMY,TKDESC)
  973.         ELSE IF (STYPE.EQ.63) THEN
  974.             CALL ZTOKWR(TSTOP,0,DUMMY,TKDESC)
  975.             IF (PTR.NE.0) CALL YLEAF(PTR,TKDESC)
  976.         ELSE IF (STYPE.EQ.64) THEN
  977.             CALL ZTOKWR(TPAUSE,0,DUMMY,TKDESC)
  978.             IF (PTR.NE.0) CALL YLEAF(PTR,TKDESC)
  979.         ELSE IF (STYPE.EQ.65) THEN
  980.             CALL XYWRIT(PTR,TKDESC)
  981.         ELSE IF (STYPE.EQ.67) THEN
  982.             CALL XYPRIN(PTR,TKDESC)
  983.         ELSE IF (STYPE.EQ.66) THEN
  984.             CALL XYREAD(PTR,TKDESC)
  985.         ELSE IF (STYPE.EQ.75 .OR. STYPE.EQ.76 .OR.
  986.      +           STYPE.EQ.77 .OR. STYPE.EQ.72 .OR.
  987.      +           STYPE.EQ.73 .OR. STYPE.EQ.74) THEN
  988.             CALL XYAUX(PTR,TKDESC)
  989.         ELSE IF (STYPE.EQ.7) THEN
  990.             CALL ZTOKWR(TPROGR,0,DUMMY,TKDESC)
  991.             CALL YLEAF(PTR,TKDESC)
  992.         ELSE IF (STYPE.EQ.16) THEN
  993.             CALL XYSUBR(PTR,TKDESC)
  994.         ELSE IF (STYPE.EQ.8) THEN
  995.             CALL XYFUNC(PTR,TKDESC)
  996.         ELSE IF (STYPE.EQ.19) THEN
  997.             CALL ZTOKWR(TBLOCK,0,DUMMY,TKDESC)
  998.             IF (PTR.NE.0) CALL YLEAF(PTR,TKDESC)
  999.         ELSE IF (STYPE.EQ.6) THEN
  1000.             CALL ZTOKWR(TEND,0,DUMMY,TKDESC)
  1001.         ELSE IF (STYPE.EQ.121) THEN
  1002.             CALL YLEAF(PTR,TKDESC)
  1003.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  1004.             PTR=NEXT(PTR)
  1005.             CALL YLIST(YLEAF,DOWN(PTR),TKDESC)
  1006.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1007.             CALL ZTOKWR(TEQUAL,0,DUMMY,TKDESC)
  1008.             CALL YEXPR(NEXT(PTR),TKDESC)
  1009.         ELSE IF (STYPE.EQ.18) THEN
  1010.             CALL ZTOKWR(TENTRY,0,DUMMY,TKDESC)
  1011.             CALL YLEAF(PTR,TKDESC)
  1012.             PTR=NEXT(PTR)
  1013.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  1014.             IF (PTR.NE.0) CALL YLIST(YLEAF,DOWN(PTR),TKDESC)
  1015.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1016.         ELSE IF (STYPE.EQ.50) THEN
  1017.             CALL XYASSI(PTR,TKDESC)
  1018.         ELSE IF (STYPE.EQ.131 .OR. STYPE.EQ.132) THEN
  1019.             RETURN
  1020.         ELSE
  1021.             CALL ERROR('YSTMT: Don''t understand statement type')
  1022.         END IF
  1023.  
  1024.  1000   CONTINUE
  1025.         CALL ZTOKWR(TZEOS,0,DUMMY,TKDESC)
  1026.  
  1027.         END
  1028. C ----------------------------------------------------------------------
  1029. C
  1030. C       Y I T E M   -   Output leaf/ardcl/arelm/substr
  1031. C
  1032.  
  1033.         SUBROUTINE YITEM(NODE,TKDESC)
  1034.         INTEGER NODE,TKDESC
  1035.  
  1036. C---------------------------------------------------------
  1037. C    TOOLPACK/1    Release: 2.5
  1038. C---------------------------------------------------------
  1039. C
  1040. C  TKLAST = LAST TOKEN NUMBER
  1041. C
  1042.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1043.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1044.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1045.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1046.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1047.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1048.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1049.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1050.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1051.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1052.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1053.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1054.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1055.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1056.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1057.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1058.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1059.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1060.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1061.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1062.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1063.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1064.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1065.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1066.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1067.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1068.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1069.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1070.  
  1071.  
  1072.         INTEGER NODTYP,PTR
  1073.         LOGICAL CHARA
  1074.  
  1075. C---------------------------------------------------------
  1076. C    TOOLPACK/1    Release: 2.5
  1077. C---------------------------------------------------------
  1078. C
  1079. C Common block and access functions for YP parse tree
  1080. C
  1081. C---------------------------------------------------------
  1082. C    TOOLPACK/1    Release: 2.5
  1083. C---------------------------------------------------------
  1084.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1085.         INTEGER ROOT,TREE(4,46339),TRETOP
  1086.  
  1087.         SAVE /XCTREE/
  1088. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1089.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1090.  
  1091.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1092.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1093.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1094.         DOWN(JABC12)=TREE(2,JABC12)
  1095.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1096.         NATTR(JABC12)=TREE(4,JABC12)
  1097.  
  1098.         NODTYP=NTYPE(NODE)
  1099.         IF (NODTYP.EQ.31) THEN
  1100.             CHARA=.TRUE.
  1101.             PTR=DOWN(NODE)
  1102.             NODTYP=NTYPE(PTR)
  1103.         ELSE
  1104.             CHARA=.FALSE.
  1105.             PTR=NODE
  1106.         END IF
  1107.         IF (NODTYP.EQ.103) THEN
  1108.             CALL YSUBST(PTR,TKDESC)
  1109.         ELSE IF (NODTYP.EQ.104) THEN
  1110.             CALL YARELM(PTR,TKDESC)
  1111.         ELSE IF (NODTYP.EQ.21) THEN
  1112.             CALL YLEAF(DOWN(PTR),TKDESC)
  1113.             CALL YARDCL(NEXT(DOWN(PTR)),TKDESC)
  1114.         ELSE
  1115.             CALL YLEAF(PTR,TKDESC)
  1116.         END IF
  1117.         IF (CHARA) CALL YCHLEN(-NEXT(PTR),TKDESC)
  1118.  
  1119.         END
  1120. C ----------------------------------------------------------------------
  1121. C
  1122. C       Y L I S T   -   Output a list separated by commas
  1123. C
  1124.  
  1125.         SUBROUTINE YLIST(SUBR,NODE,TKDESC)
  1126.         INTEGER NODE,TKDESC
  1127.         EXTERNAL SUBR
  1128.  
  1129. C---------------------------------------------------------
  1130. C    TOOLPACK/1    Release: 2.5
  1131. C---------------------------------------------------------
  1132. C
  1133. C  TKLAST = LAST TOKEN NUMBER
  1134. C
  1135.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1136.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1137.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1138.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1139.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1140.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1141.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1142.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1143.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1144.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1145.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1146.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1147.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1148.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1149.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1150.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1151.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1152.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1153.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1154.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1155.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1156.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1157.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1158.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1159.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1160.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1161.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1162.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1163.  
  1164.  
  1165.         INTEGER PTR,DUMMY(2)
  1166.  
  1167.         EXTERNAL ZTOKWR
  1168.  
  1169.         SAVE DUMMY
  1170.  
  1171. C---------------------------------------------------------
  1172. C    TOOLPACK/1    Release: 2.5
  1173. C---------------------------------------------------------
  1174. C
  1175. C Common block and access functions for YP parse tree
  1176. C
  1177. C---------------------------------------------------------
  1178. C    TOOLPACK/1    Release: 2.5
  1179. C---------------------------------------------------------
  1180.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1181.         INTEGER ROOT,TREE(4,46339),TRETOP
  1182.  
  1183.         SAVE /XCTREE/
  1184. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1185.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1186.  
  1187.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1188.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1189.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1190.         DOWN(JABC12)=TREE(2,JABC12)
  1191.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1192.         NATTR(JABC12)=TREE(4,JABC12)
  1193.  
  1194.         DATA DUMMY(1)/129/
  1195.  
  1196.         PTR=NODE
  1197.  
  1198.  100    CALL SUBR(PTR,TKDESC)
  1199.         PTR=NEXT(PTR)
  1200.         IF (PTR.NE.0) THEN
  1201.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  1202.             GO TO 100
  1203.         END IF
  1204.  
  1205.         END
  1206. C ----------------------------------------------------------------------
  1207. C
  1208. C       Y T Y P E   -   Output a data type (from a node pointer)
  1209. C
  1210.  
  1211.         SUBROUTINE YTYPE(NODE,TKDESC)
  1212.         INTEGER NODE,TKDESC
  1213.  
  1214.         INTEGER NODTYP,DUMMY(2),TOKTYP
  1215.  
  1216. C---------------------------------------------------------
  1217. C    TOOLPACK/1    Release: 2.5
  1218. C---------------------------------------------------------
  1219. C
  1220. C  TKLAST = LAST TOKEN NUMBER
  1221. C
  1222.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1223.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1224.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1225.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1226.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1227.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1228.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1229.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1230.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1231.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1232.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1233.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1234.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1235.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1236.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1237.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1238.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1239.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1240.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1241.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1242.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1243.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1244.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1245.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1246.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1247.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1248.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1249.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1250.  
  1251.  
  1252.         SAVE DUMMY
  1253.  
  1254.         EXTERNAL ZTOKWR,ERROR
  1255.  
  1256. C---------------------------------------------------------
  1257. C    TOOLPACK/1    Release: 2.5
  1258. C---------------------------------------------------------
  1259. C
  1260. C Common block and access functions for YP parse tree
  1261. C
  1262. C---------------------------------------------------------
  1263. C    TOOLPACK/1    Release: 2.5
  1264. C---------------------------------------------------------
  1265.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1266.         INTEGER ROOT,TREE(4,46339),TRETOP
  1267.  
  1268.         SAVE /XCTREE/
  1269. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1270.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1271.  
  1272.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1273.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1274.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1275.         DOWN(JABC12)=TREE(2,JABC12)
  1276.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1277.         NATTR(JABC12)=TREE(4,JABC12)
  1278.  
  1279.         DATA DUMMY(1)/129/
  1280.  
  1281.         NODTYP=NTYPE(NODE)
  1282.         IF (NODTYP.EQ.9) THEN
  1283.             TOKTYP=TINTEG
  1284.         ELSE IF (NODTYP.EQ.10) THEN
  1285.             TOKTYP=TREAL
  1286.         ELSE IF (NODTYP.EQ.13) THEN
  1287.             TOKTYP=TLOGIC
  1288.         ELSE IF (NODTYP.EQ.12) THEN
  1289.             TOKTYP=TCOMPL
  1290.         ELSE IF (NODTYP.EQ.11) THEN
  1291.             TOKTYP=TDOUBL
  1292.         ELSE IF (NODTYP.EQ.14) THEN
  1293.             TOKTYP=TCHARA
  1294.         ELSE IF (NODTYP.EQ.125) THEN
  1295.             TOKTYP=TDCMPL
  1296.         ELSE
  1297.             CALL ERROR('YTYPE: Invalid type node')
  1298.         END IF
  1299.         CALL ZTOKWR(TOKTYP,0,DUMMY,TKDESC)
  1300.         IF (DOWN(NODE).NE.0) CALL YCHLEN(-DOWN(NODE),TKDESC)
  1301.  
  1302.         END
  1303. C ----------------------------------------------------------------------
  1304. C
  1305. C       X Y P A R A   -   Output a Parameter Statement
  1306. C
  1307.  
  1308.         SUBROUTINE XYPARA(NODE,TKDESC)
  1309.         INTEGER NODE,TKDESC
  1310.  
  1311. C---------------------------------------------------------
  1312. C    TOOLPACK/1    Release: 2.5
  1313. C---------------------------------------------------------
  1314. C
  1315. C  TKLAST = LAST TOKEN NUMBER
  1316. C
  1317.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1318.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1319.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1320.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1321.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1322.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1323.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1324.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1325.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1326.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1327.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1328.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1329.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1330.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1331.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1332.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1333.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1334.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1335.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1336.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1337.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1338.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1339.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1340.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1341.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1342.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1343.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1344.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1345.  
  1346. C---------------------------------------------------------
  1347. C    TOOLPACK/1    Release: 2.5
  1348. C---------------------------------------------------------
  1349.         COMMON/XCSYMS/MODFLG,NSYMS,NPUS,PUIDX,SYMBOL
  1350.         INTEGER NSYMS,NPUS,PUIDX(250),
  1351.      +          SYMBOL(8,5003)
  1352.         LOGICAL MODFLG
  1353.  
  1354.         SAVE /XCSYMS/
  1355. C---------------------------------------------------------
  1356. C    TOOLPACK/1    Release: 2.5
  1357. C---------------------------------------------------------
  1358.         COMMON/XCSTRI/STRTXT,STRTBL,NSTRNG,TXTTOP
  1359.         INTEGER STRTXT(46339),STRTBL(7103),NSTRNG,TXTTOP
  1360.  
  1361.         SAVE /XCSTRI/
  1362.  
  1363.  
  1364.         SAVE DUMMY
  1365.  
  1366.         INTEGER PTR,DUMMY(2),TXTPTR
  1367.  
  1368.         INTEGER LENGTH
  1369.         EXTERNAL LENGTH,ZTOKWR,YEXPR
  1370.  
  1371. C---------------------------------------------------------
  1372. C    TOOLPACK/1    Release: 2.5
  1373. C---------------------------------------------------------
  1374. C
  1375. C Common block and access functions for YP parse tree
  1376. C
  1377. C---------------------------------------------------------
  1378. C    TOOLPACK/1    Release: 2.5
  1379. C---------------------------------------------------------
  1380.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1381.         INTEGER ROOT,TREE(4,46339),TRETOP
  1382.  
  1383.         SAVE /XCTREE/
  1384. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1385.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1386.  
  1387.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1388.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1389.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1390.         DOWN(JABC12)=TREE(2,JABC12)
  1391.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1392.         NATTR(JABC12)=TREE(4,JABC12)
  1393.  
  1394.         DATA DUMMY(1)/129/
  1395.  
  1396.         CALL ZTOKWR(TPARAM,0,DUMMY,TKDESC)
  1397.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  1398.         PTR=NODE
  1399.  
  1400.  100    TXTPTR=SYMBOL(2,-DOWN(DOWN(PTR)))
  1401.         CALL ZTOKWR(TNAME,LENGTH(STRTXT(TXTPTR)),STRTXT(TXTPTR),TKDESC)
  1402.         CALL ZTOKWR(TEQUAL,0,DUMMY,TKDESC)
  1403.         CALL YEXPR(NEXT(DOWN(PTR)),TKDESC)
  1404.         PTR=NEXT(PTR)
  1405.         IF (PTR.NE.0) THEN
  1406.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  1407.             GOTO 100
  1408.         END IF
  1409.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1410.  
  1411.         END
  1412. C ----------------------------------------------------------------------
  1413. C
  1414. C       X Y C A L L   -   Output a CALL statement
  1415. C
  1416.  
  1417.         SUBROUTINE XYCALL(NODE,TKDESC)
  1418.         INTEGER NODE,TKDESC
  1419.  
  1420. C---------------------------------------------------------
  1421. C    TOOLPACK/1    Release: 2.5
  1422. C---------------------------------------------------------
  1423. C
  1424. C  TKLAST = LAST TOKEN NUMBER
  1425. C
  1426.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1427.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1428.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1429.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1430.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1431.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1432.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1433.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1434.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1435.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1436.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1437.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1438.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1439.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1440.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1441.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1442.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1443.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1444.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1445.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1446.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1447.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1448.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1449.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1450.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1451.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1452.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1453.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1454.  
  1455.  
  1456.         INTEGER PTR,DUMMY(2)
  1457.  
  1458.         SAVE DUMMY
  1459.  
  1460.         EXTERNAL ZTOKWR
  1461.  
  1462. C---------------------------------------------------------
  1463. C    TOOLPACK/1    Release: 2.5
  1464. C---------------------------------------------------------
  1465. C
  1466. C Common block and access functions for YP parse tree
  1467. C
  1468. C---------------------------------------------------------
  1469. C    TOOLPACK/1    Release: 2.5
  1470. C---------------------------------------------------------
  1471.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1472.         INTEGER ROOT,TREE(4,46339),TRETOP
  1473.  
  1474.         SAVE /XCTREE/
  1475. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1476.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1477.  
  1478.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1479.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1480.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1481.         DOWN(JABC12)=TREE(2,JABC12)
  1482.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1483.         NATTR(JABC12)=TREE(4,JABC12)
  1484.  
  1485.         DATA DUMMY(1)/129/
  1486.  
  1487.         CALL ZTOKWR(TCALL,0,DUMMY,TKDESC)
  1488.         CALL YLEAF(NODE,TKDESC)
  1489.         PTR=NEXT(NODE)
  1490.         IF (PTR.EQ.0) RETURN
  1491.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  1492.  
  1493.  100    IF (NTYPE(PTR).EQ.116) THEN
  1494.             CALL ZTOKWR(TSTAR,0,DUMMY,TKDESC)
  1495.             CALL YLEAF(PTR,TKDESC)
  1496.         ELSE
  1497.             CALL YEXPR(PTR,TKDESC)
  1498.         END IF
  1499.         PTR=NEXT(PTR)
  1500.         IF (PTR.NE.0) THEN
  1501.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  1502.             GO TO 100
  1503.         END IF
  1504.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1505.  
  1506.         END
  1507. C ----------------------------------------------------------------------
  1508. C
  1509. C       X Y R E T U   -   Output a RETURN statement
  1510. C
  1511.  
  1512.         SUBROUTINE XYRETU(NODE,TKDESC)
  1513.         INTEGER NODE,TKDESC
  1514.  
  1515.         INTEGER DUMMY(2)
  1516.  
  1517. C---------------------------------------------------------
  1518. C    TOOLPACK/1    Release: 2.5
  1519. C---------------------------------------------------------
  1520. C
  1521. C  TKLAST = LAST TOKEN NUMBER
  1522. C
  1523.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1524.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1525.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1526.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1527.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1528.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1529.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1530.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1531.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1532.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1533.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1534.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1535.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1536.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1537.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1538.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1539.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1540.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1541.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1542.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1543.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1544.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1545.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1546.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1547.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1548.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1549.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1550.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1551.  
  1552.  
  1553.         SAVE DUMMY
  1554.  
  1555.         EXTERNAL ZTOKWR
  1556.  
  1557.         DATA DUMMY(1)/129/
  1558.  
  1559.         CALL ZTOKWR(TRETUR,0,DUMMY,TKDESC)
  1560.         IF (NODE.NE.0) CALL YEXPR(NODE,TKDESC)
  1561.  
  1562.         END
  1563. C ----------------------------------------------------------------------
  1564. C
  1565. C       X Y F R M T   -   Output a FORMAT statement
  1566. C
  1567.  
  1568.         SUBROUTINE XYFRMT(NODE,TKDESC)
  1569.         INTEGER NODE,TKDESC
  1570.  
  1571.         INTEGER PTR,NEXTX,NODTYP,TXTPTR,DUMMY(2),TOKTYP,ENDING
  1572.  
  1573. C---------------------------------------------------------
  1574. C    TOOLPACK/1    Release: 2.5
  1575. C---------------------------------------------------------
  1576. C
  1577. C  TKLAST = LAST TOKEN NUMBER
  1578. C
  1579.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1580.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1581.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1582.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1583.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1584.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1585.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1586.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1587.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1588.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1589.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1590.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1591.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1592.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1593.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1594.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1595.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1596.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1597.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1598.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1599.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1600.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1601.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1602.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1603.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1604.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1605.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1606.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1607.  
  1608. C---------------------------------------------------------
  1609. C    TOOLPACK/1    Release: 2.5
  1610. C---------------------------------------------------------
  1611.         COMMON/XCSTRI/STRTXT,STRTBL,NSTRNG,TXTTOP
  1612.         INTEGER STRTXT(46339),STRTBL(7103),NSTRNG,TXTTOP
  1613.  
  1614.         SAVE /XCSTRI/
  1615.  
  1616.  
  1617.         SAVE DUMMY
  1618.  
  1619.         INTEGER LENGTH
  1620.         EXTERNAL LENGTH,ZTOKWR,ERROR
  1621.  
  1622. C---------------------------------------------------------
  1623. C    TOOLPACK/1    Release: 2.5
  1624. C---------------------------------------------------------
  1625. C
  1626. C Common block and access functions for YP parse tree
  1627. C
  1628. C---------------------------------------------------------
  1629. C    TOOLPACK/1    Release: 2.5
  1630. C---------------------------------------------------------
  1631.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1632.         INTEGER ROOT,TREE(4,46339),TRETOP
  1633.  
  1634.         SAVE /XCTREE/
  1635. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1636.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1637.  
  1638.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1639.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1640.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1641.         DOWN(JABC12)=TREE(2,JABC12)
  1642.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1643.         NATTR(JABC12)=TREE(4,JABC12)
  1644.  
  1645.         DATA DUMMY(1)/129/
  1646.  
  1647.         CALL ZTOKWR(TFORMA,0,DUMMY,TKDESC)
  1648.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  1649.         IF (NODE.EQ.0) THEN
  1650.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1651.             RETURN
  1652.         END IF
  1653.         PTR=NODE
  1654.         ENDING=UP(NODE)
  1655.  
  1656.  100    NODTYP=NTYPE(PTR)
  1657.         IF (NODTYP.EQ.117) THEN
  1658.             PTR=DOWN(PTR)
  1659.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  1660.             GO TO 100
  1661.         ELSE IF (NODTYP.EQ.79) THEN
  1662.             PTR=DOWN(PTR)
  1663.             GO TO 100
  1664.         ELSE IF (NODTYP.EQ.80) THEN
  1665.             CALL ZTOKWR(TSLASH,0,DUMMY,TKDESC)
  1666.         ELSE IF (NODTYP.EQ.81) THEN
  1667.             CALL ZTOKWR(TCOLON,0,DUMMY,TKDESC)
  1668.         ELSE
  1669.             TXTPTR=-DOWN(PTR)
  1670.             IF (NODTYP.EQ.112) THEN
  1671.                 TOKTYP=TFIELD
  1672.             ELSE IF (NODTYP.EQ.126) THEN
  1673.                 TOKTYP=TSCALE
  1674.             ELSE IF (NODTYP.EQ.114) THEN
  1675.                 TOKTYP=TCCNST
  1676.             ELSE IF (NODTYP.EQ.113) THEN
  1677.                 TOKTYP=THCNST
  1678.             ELSE IF (NODTYP.EQ.107) THEN
  1679.                 TOKTYP=TDCNST
  1680.             ELSE
  1681.                 CALL ERROR('XYFRMT: Invalid node type')
  1682.             END IF
  1683.             CALL ZTOKWR(TOKTYP,LENGTH(STRTXT(TXTPTR)),STRTXT(TXTPTR),
  1684.      +                  TKDESC)
  1685.         END IF
  1686.  
  1687.  200    NEXTX=NEXT(PTR)
  1688.         IF (NEXTX.NE.0) THEN
  1689.             PTR=NEXTX
  1690.             IF (NODTYP.NE.107)
  1691.      +          CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  1692.             GO TO 100
  1693.         END IF
  1694.         PTR=UP(PTR)
  1695.         IF (PTR.EQ.ENDING) THEN
  1696.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1697.             RETURN
  1698.         END IF
  1699.         IF (NTYPE(PTR).EQ.117)
  1700.      +      CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1701.         GO TO 200
  1702.  
  1703.         END
  1704. C ----------------------------------------------------------------------
  1705. C
  1706. C       X Y E Q V L   -   Output an EQUIVALENCE statement
  1707. C
  1708.  
  1709.         SUBROUTINE XYEQVL(NODE,TKDESC)
  1710.         INTEGER NODE,TKDESC
  1711.  
  1712. C---------------------------------------------------------
  1713. C    TOOLPACK/1    Release: 2.5
  1714. C---------------------------------------------------------
  1715. C
  1716. C  TKLAST = LAST TOKEN NUMBER
  1717. C
  1718.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1719.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1720.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1721.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1722.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1723.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1724.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1725.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1726.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1727.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1728.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1729.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1730.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1731.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1732.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1733.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1734.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1735.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1736.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1737.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1738.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1739.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1740.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1741.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1742.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1743.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1744.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1745.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1746.  
  1747.  
  1748.         INTEGER PTR,DUMMY(2)
  1749.  
  1750.         SAVE DUMMY
  1751.  
  1752.         EXTERNAL ZTOKWR,YLIST,YITEM
  1753.  
  1754. C---------------------------------------------------------
  1755. C    TOOLPACK/1    Release: 2.5
  1756. C---------------------------------------------------------
  1757. C
  1758. C Common block and access functions for YP parse tree
  1759. C
  1760. C---------------------------------------------------------
  1761. C    TOOLPACK/1    Release: 2.5
  1762. C---------------------------------------------------------
  1763.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1764.         INTEGER ROOT,TREE(4,46339),TRETOP
  1765.  
  1766.         SAVE /XCTREE/
  1767. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1768.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1769.  
  1770.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1771.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1772.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1773.         DOWN(JABC12)=TREE(2,JABC12)
  1774.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1775.         NATTR(JABC12)=TREE(4,JABC12)
  1776.  
  1777.         DATA DUMMY(1)/129/
  1778.  
  1779.         CALL ZTOKWR(TEQUIV,0,DUMMY,TKDESC)
  1780.         PTR=NODE
  1781.  
  1782.  100    CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  1783.         CALL YLIST(YITEM,DOWN(PTR),TKDESC)
  1784.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  1785.         PTR=NEXT(PTR)
  1786.         IF (PTR.NE.0) THEN
  1787.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  1788.             GO TO 100
  1789.         END IF
  1790.  
  1791.         END
  1792. C ----------------------------------------------------------------------
  1793. C
  1794. C       X Y C M M N   -   Output a COMMON statement
  1795. C
  1796.  
  1797.         SUBROUTINE XYCMMN(NODE,TKDESC)
  1798.         INTEGER NODE,TKDESC
  1799.  
  1800. C---------------------------------------------------------
  1801. C    TOOLPACK/1    Release: 2.5
  1802. C---------------------------------------------------------
  1803. C
  1804. C  TKLAST = LAST TOKEN NUMBER
  1805. C
  1806.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1807.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1808.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1809.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1810.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1811.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1812.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1813.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1814.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1815.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1816.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1817.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1818.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1819.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1820.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1821.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1822.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1823.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1824.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1825.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1826.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1827.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1828.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1829.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1830.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1831.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1832.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1833.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1834.  
  1835.  
  1836.         INTEGER PTR,DUMMY(2),P2
  1837.  
  1838.         EXTERNAL YLIST,YITEM,ZTOKWR
  1839.  
  1840.         SAVE DUMMY
  1841.  
  1842. C---------------------------------------------------------
  1843. C    TOOLPACK/1    Release: 2.5
  1844. C---------------------------------------------------------
  1845. C
  1846. C Common block and access functions for YP parse tree
  1847. C
  1848. C---------------------------------------------------------
  1849. C    TOOLPACK/1    Release: 2.5
  1850. C---------------------------------------------------------
  1851.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1852.         INTEGER ROOT,TREE(4,46339),TRETOP
  1853.  
  1854.         SAVE /XCTREE/
  1855. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1856.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1857.  
  1858.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1859.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1860.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1861.         DOWN(JABC12)=TREE(2,JABC12)
  1862.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1863.         NATTR(JABC12)=TREE(4,JABC12)
  1864.  
  1865.         DATA DUMMY(1)/129/
  1866.  
  1867.         CALL ZTOKWR(TCOMMO,0,DUMMY,TKDESC)
  1868.         PTR=NODE
  1869.  
  1870.  100    P2=DOWN(PTR)
  1871.         IF (NTYPE(PTR).EQ.28) THEN
  1872.             CALL YLEAF(P2,TKDESC)
  1873.             CALL YLIST(YITEM,DOWN(NEXT(P2)),TKDESC)
  1874.         ELSE
  1875.             IF (PTR.NE.NODE) CALL ZTOKWR(TCNCAT,0,DUMMY,TKDESC)
  1876.             CALL YLIST(YITEM,DOWN(P2),TKDESC)
  1877.         END IF
  1878.         PTR=NEXT(PTR)
  1879.         IF (PTR.NE.0) THEN
  1880.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  1881.             GO TO 100
  1882.         END IF
  1883.  
  1884.         END
  1885. C ----------------------------------------------------------------------
  1886. C
  1887. C       X Y A S G N   -   Output an assignment statement
  1888. C
  1889.  
  1890.         SUBROUTINE XYASGN(NODE,TKDESC)
  1891.         INTEGER NODE,TKDESC
  1892.  
  1893.         INTEGER DUMMY(2)
  1894.  
  1895. C---------------------------------------------------------
  1896. C    TOOLPACK/1    Release: 2.5
  1897. C---------------------------------------------------------
  1898. C
  1899. C  TKLAST = LAST TOKEN NUMBER
  1900. C
  1901.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1902.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1903.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1904.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1905.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1906.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1907.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1908.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1909.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1910.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1911.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1912.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1913.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1914.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1915.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1916.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1917.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1918.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1919.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1920.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1921.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1922.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1923.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1924.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1925.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1926.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1927.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1928.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1929.  
  1930.  
  1931.         SAVE DUMMY
  1932.  
  1933.         EXTERNAL ZTOKWR,YITEM,YEXPR
  1934.  
  1935. C---------------------------------------------------------
  1936. C    TOOLPACK/1    Release: 2.5
  1937. C---------------------------------------------------------
  1938. C
  1939. C Common block and access functions for YP parse tree
  1940. C
  1941. C---------------------------------------------------------
  1942. C    TOOLPACK/1    Release: 2.5
  1943. C---------------------------------------------------------
  1944.         COMMON/XCTREE/ROOT,TREE,TRETOP
  1945.         INTEGER ROOT,TREE(4,46339),TRETOP
  1946.  
  1947.         SAVE /XCTREE/
  1948. C Use "JABC12" to try to avoid conflicts with ordinary variables
  1949.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  1950.  
  1951.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  1952.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  1953.         UP(JABC12)=(TREE(1,JABC12)/46340)
  1954.         DOWN(JABC12)=TREE(2,JABC12)
  1955.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  1956.         NATTR(JABC12)=TREE(4,JABC12)
  1957.  
  1958.         DATA DUMMY(1)/129/
  1959.  
  1960.         CALL YITEM(NODE,TKDESC)
  1961.         CALL ZTOKWR(TEQUAL,0,DUMMY,TKDESC)
  1962.         CALL YEXPR(NEXT(NODE),TKDESC)
  1963.  
  1964.         END
  1965. C ----------------------------------------------------------------------
  1966. C
  1967. C       X Y D O S P   -   Output a DO specification
  1968. C
  1969.  
  1970.         SUBROUTINE XYDOSP(NODE,TKDESC)
  1971.         INTEGER NODE,TKDESC
  1972.  
  1973.         INTEGER PTR,DUMMY(2)
  1974.  
  1975. C---------------------------------------------------------
  1976. C    TOOLPACK/1    Release: 2.5
  1977. C---------------------------------------------------------
  1978. C
  1979. C  TKLAST = LAST TOKEN NUMBER
  1980. C
  1981.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1982.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1983.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1984.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1985.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1986.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1987.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1988.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1989.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1990.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1991.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1992.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1993.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1994.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1995.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1996.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1997.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1998.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1999.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2000.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2001.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2002.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2003.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2004.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2005.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2006.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2007.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2008.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2009.  
  2010.  
  2011.         SAVE DUMMY
  2012.  
  2013.         EXTERNAL ZTOKWR,YLEAF,YEXPR
  2014.  
  2015. C---------------------------------------------------------
  2016. C    TOOLPACK/1    Release: 2.5
  2017. C---------------------------------------------------------
  2018. C
  2019. C Common block and access functions for YP parse tree
  2020. C
  2021. C---------------------------------------------------------
  2022. C    TOOLPACK/1    Release: 2.5
  2023. C---------------------------------------------------------
  2024.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2025.         INTEGER ROOT,TREE(4,46339),TRETOP
  2026.  
  2027.         SAVE /XCTREE/
  2028. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2029.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2030.  
  2031.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2032.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2033.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2034.         DOWN(JABC12)=TREE(2,JABC12)
  2035.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2036.         NATTR(JABC12)=TREE(4,JABC12)
  2037.  
  2038.         DATA DUMMY(1)/129/
  2039.  
  2040.         PTR=DOWN(NODE)
  2041.         CALL YLEAF(PTR,TKDESC)
  2042.         CALL ZTOKWR(TEQUAL,0,DUMMY,TKDESC)
  2043.         PTR=NEXT(PTR)
  2044.         CALL YEXPR(PTR,TKDESC)
  2045.         PTR=NEXT(PTR)
  2046.         CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  2047.         CALL YEXPR(PTR,TKDESC)
  2048.         PTR=NEXT(PTR)
  2049.         IF (PTR.NE.0) THEN
  2050.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  2051.             CALL YEXPR(PTR,TKDESC)
  2052.         END IF
  2053.  
  2054.         END
  2055. C ----------------------------------------------------------------------
  2056. C
  2057. C       X Y D O   -   Output a DO statement
  2058. C
  2059.  
  2060.         SUBROUTINE XYDO(NODE,TKDESC)
  2061.         INTEGER NODE,TKDESC
  2062.  
  2063. C---------------------------------------------------------
  2064. C    TOOLPACK/1    Release: 2.5
  2065. C---------------------------------------------------------
  2066. C
  2067. C  TKLAST = LAST TOKEN NUMBER
  2068. C
  2069.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2070.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2071.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2072.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2073.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2074.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2075.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2076.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2077.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2078.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2079.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2080.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2081.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2082.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2083.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2084.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2085.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2086.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2087.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2088.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2089.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2090.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2091.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2092.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2093.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2094.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2095.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2096.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2097.  
  2098.  
  2099.         INTEGER DUMMY(2)
  2100.  
  2101.         SAVE DUMMY
  2102.  
  2103.         EXTERNAL ZTOKWR,YLEAF
  2104.  
  2105. C---------------------------------------------------------
  2106. C    TOOLPACK/1    Release: 2.5
  2107. C---------------------------------------------------------
  2108. C
  2109. C Common block and access functions for YP parse tree
  2110. C
  2111. C---------------------------------------------------------
  2112. C    TOOLPACK/1    Release: 2.5
  2113. C---------------------------------------------------------
  2114.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2115.         INTEGER ROOT,TREE(4,46339),TRETOP
  2116.  
  2117.         SAVE /XCTREE/
  2118. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2119.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2120.  
  2121.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2122.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2123.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2124.         DOWN(JABC12)=TREE(2,JABC12)
  2125.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2126.         NATTR(JABC12)=TREE(4,JABC12)
  2127.  
  2128.         DATA DUMMY(1)/129/
  2129.  
  2130.         CALL ZTOKWR(TDO,0,DUMMY,TKDESC)
  2131.         CALL YLEAF(NODE,TKDESC)
  2132.         CALL XYDOSP(NEXT(NODE),TKDESC)
  2133.  
  2134.         END
  2135. C ----------------------------------------------------------------------
  2136. C
  2137. C       X Y I M P L   -   Output an IMPLICIT statement
  2138. C
  2139.  
  2140.         SUBROUTINE XYIMPL(NODE,TKDESC)
  2141.         INTEGER NODE,TKDESC
  2142.  
  2143.         INTEGER PTR1,PTR2,PTR3,DUMMY(2)
  2144.  
  2145. C---------------------------------------------------------
  2146. C    TOOLPACK/1    Release: 2.5
  2147. C---------------------------------------------------------
  2148. C
  2149. C  TKLAST = LAST TOKEN NUMBER
  2150. C
  2151.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2152.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2153.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2154.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2155.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2156.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2157.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2158.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2159.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2160.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2161.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2162.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2163.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2164.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2165.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2166.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2167.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2168.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2169.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2170.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2171.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2172.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2173.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2174.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2175.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2176.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2177.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2178.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2179.  
  2180.  
  2181.         SAVE DUMMY
  2182.  
  2183.         EXTERNAL ZTOKWR
  2184.  
  2185. C---------------------------------------------------------
  2186. C    TOOLPACK/1    Release: 2.5
  2187. C---------------------------------------------------------
  2188. C
  2189. C Common block and access functions for YP parse tree
  2190. C
  2191. C---------------------------------------------------------
  2192. C    TOOLPACK/1    Release: 2.5
  2193. C---------------------------------------------------------
  2194.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2195.         INTEGER ROOT,TREE(4,46339),TRETOP
  2196.  
  2197.         SAVE /XCTREE/
  2198. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2199.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2200.  
  2201.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2202.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2203.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2204.         DOWN(JABC12)=TREE(2,JABC12)
  2205.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2206.         NATTR(JABC12)=TREE(4,JABC12)
  2207.  
  2208.         DATA DUMMY(1)/129/
  2209.  
  2210.         PTR1=NODE
  2211.         CALL ZTOKWR(TIMPLI,0,DUMMY,TKDESC)
  2212.  
  2213.  100    PTR2=DOWN(PTR1)
  2214.         CALL YTYPE(PTR2,TKDESC)
  2215.         PTR2=NEXT(PTR2)
  2216.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  2217.  
  2218.  200    PTR3=DOWN(PTR2)
  2219.         CALL YLEAF(PTR3,TKDESC)
  2220.         PTR3=NEXT(PTR3)
  2221.         IF (PTR3.NE.0) THEN
  2222.             CALL ZTOKWR(TMINUS,0,DUMMY,TKDESC)
  2223.             CALL YLEAF(PTR3,TKDESC)
  2224.         END IF
  2225.         PTR2=NEXT(PTR2)
  2226.         IF (PTR2.NE.0) THEN
  2227.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  2228.             GO TO 200
  2229.         END IF
  2230.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  2231.         PTR1=NEXT(PTR1)
  2232.         IF (PTR1.NE.0) THEN
  2233.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  2234.             GO TO 100
  2235.         END IF
  2236.  
  2237.         END
  2238. C ----------------------------------------------------------------------
  2239. C
  2240. C       X Y D A T A   -   Output a DATA statement
  2241. C
  2242.  
  2243.         SUBROUTINE XYDATA(NODE,TKDESC)
  2244.         INTEGER NODE,TKDESC
  2245.  
  2246.         INTEGER PTR,DUMMY(2),P2
  2247.  
  2248. C---------------------------------------------------------
  2249. C    TOOLPACK/1    Release: 2.5
  2250. C---------------------------------------------------------
  2251. C
  2252. C  TKLAST = LAST TOKEN NUMBER
  2253. C
  2254.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2255.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2256.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2257.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2258.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2259.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2260.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2261.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2262.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2263.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2264.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2265.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2266.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2267.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2268.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2269.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2270.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2271.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2272.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2273.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2274.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2275.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2276.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2277.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2278.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2279.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2280.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2281.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2282.  
  2283.  
  2284.         SAVE DUMMY
  2285.  
  2286.         EXTERNAL YLIST,XYDATI,XYDATO,ZTOKWR
  2287.  
  2288. C---------------------------------------------------------
  2289. C    TOOLPACK/1    Release: 2.5
  2290. C---------------------------------------------------------
  2291. C
  2292. C Common block and access functions for YP parse tree
  2293. C
  2294. C---------------------------------------------------------
  2295. C    TOOLPACK/1    Release: 2.5
  2296. C---------------------------------------------------------
  2297.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2298.         INTEGER ROOT,TREE(4,46339),TRETOP
  2299.  
  2300.         SAVE /XCTREE/
  2301. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2302.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2303.  
  2304.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2305.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2306.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2307.         DOWN(JABC12)=TREE(2,JABC12)
  2308.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2309.         NATTR(JABC12)=TREE(4,JABC12)
  2310.  
  2311.         DATA DUMMY(1)/129/
  2312.  
  2313.         CALL ZTOKWR(TDATA,0,DUMMY,TKDESC)
  2314.         PTR=NODE
  2315.  
  2316.  100    P2=DOWN(PTR)
  2317.         CALL YLIST(XYDATI,DOWN(P2),TKDESC)
  2318.         CALL ZTOKWR(TSLASH,0,DUMMY,TKDESC)
  2319.         CALL YLIST(XYDATO,DOWN(NEXT(P2)),TKDESC)
  2320.         CALL ZTOKWR(TSLASH,0,DUMMY,TKDESC)
  2321.         PTR=NEXT(PTR)
  2322.         IF (PTR.NE.0) THEN
  2323.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  2324.             GO TO 100
  2325.         END IF
  2326.  
  2327.         END
  2328. C ----------------------------------------------------------------------
  2329. C
  2330. C       X Y D A T I   -   Called by XYDATA via YLIST
  2331. C
  2332.  
  2333.         SUBROUTINE XYDATI(NODE,TKDESC)
  2334.         INTEGER NODE,TKDESC
  2335.  
  2336.         INTEGER PTR,DUMMY(2),NODTYP
  2337.  
  2338. C---------------------------------------------------------
  2339. C    TOOLPACK/1    Release: 2.5
  2340. C---------------------------------------------------------
  2341. C
  2342. C  TKLAST = LAST TOKEN NUMBER
  2343. C
  2344.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2345.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2346.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2347.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2348.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2349.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2350.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2351.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2352.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2353.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2354.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2355.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2356.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2357.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2358.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2359.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2360.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2361.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2362.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2363.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2364.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2365.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2366.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2367.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2368.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2369.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2370.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2371.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2372.  
  2373.  
  2374.         SAVE DUMMY
  2375.  
  2376.         EXTERNAL ZTOKWR
  2377.  
  2378. C---------------------------------------------------------
  2379. C    TOOLPACK/1    Release: 2.5
  2380. C---------------------------------------------------------
  2381. C
  2382. C Common block and access functions for YP parse tree
  2383. C
  2384. C---------------------------------------------------------
  2385. C    TOOLPACK/1    Release: 2.5
  2386. C---------------------------------------------------------
  2387.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2388.         INTEGER ROOT,TREE(4,46339),TRETOP
  2389.  
  2390.         SAVE /XCTREE/
  2391. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2392.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2393.  
  2394.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2395.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2396.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2397.         DOWN(JABC12)=TREE(2,JABC12)
  2398.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2399.         NATTR(JABC12)=TREE(4,JABC12)
  2400.  
  2401.         DATA DUMMY(1)/129/
  2402.  
  2403.         IF (NTYPE(NODE).NE.47) THEN
  2404.             CALL YITEM(NODE,TKDESC)
  2405.             RETURN
  2406.         END IF
  2407.         PTR=NODE
  2408.  
  2409.  100    NODTYP=NTYPE(PTR)
  2410.         IF (NODTYP.EQ.47) THEN
  2411.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  2412.             PTR=DOWN(PTR)
  2413.         ELSE IF (NODTYP.EQ.104) THEN
  2414.             CALL YITEM(PTR,TKDESC)
  2415.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  2416.             PTR=NEXT(PTR)
  2417.         ELSE
  2418. C type = dospec
  2419.             CALL XYDOSP(PTR,TKDESC)
  2420.             PTR=UP(PTR)
  2421.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  2422.             IF (PTR.EQ.NODE) RETURN
  2423.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  2424.             PTR=NEXT(PTR)
  2425.         END IF
  2426.         GO TO 100
  2427.  
  2428.         END
  2429. C ----------------------------------------------------------------------
  2430. C
  2431. C       X Y D A T O   -   Called by XYDATA (via YLIST)
  2432. C
  2433.  
  2434.         SUBROUTINE XYDATO(NODE,TKDESC)
  2435.         INTEGER NODE,TKDESC
  2436.  
  2437.         INTEGER DUMMY(2)
  2438.  
  2439. C---------------------------------------------------------
  2440. C    TOOLPACK/1    Release: 2.5
  2441. C---------------------------------------------------------
  2442. C
  2443. C  TKLAST = LAST TOKEN NUMBER
  2444. C
  2445.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2446.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2447.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2448.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2449.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2450.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2451.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2452.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2453.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2454.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2455.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2456.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2457.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2458.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2459.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2460.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2461.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2462.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2463.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2464.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2465.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2466.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2467.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2468.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2469.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2470.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2471.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2472.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2473.  
  2474.  
  2475.         SAVE DUMMY
  2476.  
  2477.         EXTERNAL ZTOKWR
  2478.  
  2479. C---------------------------------------------------------
  2480. C    TOOLPACK/1    Release: 2.5
  2481. C---------------------------------------------------------
  2482. C
  2483. C Common block and access functions for YP parse tree
  2484. C
  2485. C---------------------------------------------------------
  2486. C    TOOLPACK/1    Release: 2.5
  2487. C---------------------------------------------------------
  2488.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2489.         INTEGER ROOT,TREE(4,46339),TRETOP
  2490.  
  2491.         SAVE /XCTREE/
  2492. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2493.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2494.  
  2495.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2496.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2497.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2498.         DOWN(JABC12)=TREE(2,JABC12)
  2499.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2500.         NATTR(JABC12)=TREE(4,JABC12)
  2501.  
  2502.         DATA DUMMY(1)/129/
  2503.  
  2504.         IF (NTYPE(NODE).EQ.45) THEN
  2505.             CALL YLEAF(DOWN(NODE),TKDESC)
  2506.             CALL ZTOKWR(TSTAR,0,DUMMY,TKDESC)
  2507.             CALL YEXPR(NEXT(DOWN(NODE)),TKDESC)
  2508.         ELSE
  2509.             CALL YEXPR(NODE,TKDESC)
  2510.         END IF
  2511.  
  2512.         END
  2513. C ----------------------------------------------------------------------
  2514. C
  2515. C       X Y A S S I   -   Output an ASSIGN statement
  2516. C
  2517.  
  2518.         SUBROUTINE XYASSI(NODE,TKDESC)
  2519.         INTEGER NODE,TKDESC
  2520.  
  2521.         INTEGER DUMMY(2)
  2522.  
  2523. C---------------------------------------------------------
  2524. C    TOOLPACK/1    Release: 2.5
  2525. C---------------------------------------------------------
  2526. C
  2527. C  TKLAST = LAST TOKEN NUMBER
  2528. C
  2529.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2530.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2531.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2532.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2533.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2534.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2535.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2536.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2537.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2538.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2539.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2540.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2541.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2542.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2543.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2544.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2545.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2546.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2547.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2548.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2549.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2550.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2551.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2552.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2553.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2554.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2555.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2556.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2557.  
  2558.  
  2559.         SAVE DUMMY
  2560.  
  2561.         EXTERNAL ZTOKWR
  2562.  
  2563. C---------------------------------------------------------
  2564. C    TOOLPACK/1    Release: 2.5
  2565. C---------------------------------------------------------
  2566. C
  2567. C Common block and access functions for YP parse tree
  2568. C
  2569. C---------------------------------------------------------
  2570. C    TOOLPACK/1    Release: 2.5
  2571. C---------------------------------------------------------
  2572.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2573.         INTEGER ROOT,TREE(4,46339),TRETOP
  2574.  
  2575.         SAVE /XCTREE/
  2576. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2577.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2578.  
  2579.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2580.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2581.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2582.         DOWN(JABC12)=TREE(2,JABC12)
  2583.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2584.         NATTR(JABC12)=TREE(4,JABC12)
  2585.  
  2586.         DATA DUMMY(1)/129/
  2587.  
  2588.         CALL ZTOKWR(TASSIG,0,DUMMY,TKDESC)
  2589.         CALL YLEAF(NODE,TKDESC)
  2590.         CALL ZTOKWR(TTO,0,DUMMY,TKDESC)
  2591.         CALL YLEAF(NEXT(NODE),TKDESC)
  2592.  
  2593.         END
  2594. C ----------------------------------------------------------------------
  2595. C
  2596. C       X Y S F   -   Output a statement function
  2597. C
  2598.  
  2599.         SUBROUTINE XYSF(NODE,TKDESC)
  2600.         INTEGER NODE,TKDESC
  2601.  
  2602.         INTEGER DUMMY(2)
  2603.  
  2604. C---------------------------------------------------------
  2605. C    TOOLPACK/1    Release: 2.5
  2606. C---------------------------------------------------------
  2607. C
  2608. C  TKLAST = LAST TOKEN NUMBER
  2609. C
  2610.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2611.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2612.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2613.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2614.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2615.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2616.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2617.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2618.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2619.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2620.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2621.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2622.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2623.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2624.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2625.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2626.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2627.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2628.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2629.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2630.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2631.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2632.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2633.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2634.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2635.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2636.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2637.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2638.  
  2639.  
  2640.         SAVE DUMMY
  2641.  
  2642.         EXTERNAL ZTOKWR,YLIST,YLEAF,YEXPR
  2643.  
  2644. C---------------------------------------------------------
  2645. C    TOOLPACK/1    Release: 2.5
  2646. C---------------------------------------------------------
  2647. C
  2648. C Common block and access functions for YP parse tree
  2649. C
  2650. C---------------------------------------------------------
  2651. C    TOOLPACK/1    Release: 2.5
  2652. C---------------------------------------------------------
  2653.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2654.         INTEGER ROOT,TREE(4,46339),TRETOP
  2655.  
  2656.         SAVE /XCTREE/
  2657. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2658.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2659.  
  2660.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2661.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2662.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2663.         DOWN(JABC12)=TREE(2,JABC12)
  2664.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2665.         NATTR(JABC12)=TREE(4,JABC12)
  2666.  
  2667.         DATA DUMMY(1)/129/
  2668.  
  2669.         CALL YLEAF(NODE,TKDESC)
  2670.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  2671.         CALL YLIST(YLEAF,DOWN(NEXT(NODE)),TKDESC)
  2672.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  2673.         CALL ZTOKWR(TEQUAL,0,DUMMY,TKDESC)
  2674.         CALL YEXPR(NEXT(NEXT(NODE)),TKDESC)
  2675.  
  2676.         END
  2677. C ----------------------------------------------------------------------
  2678. C
  2679. C       X Y C M G O   -   Output a computed GOTO
  2680. C
  2681.  
  2682.         SUBROUTINE XYCMGO(NODE,TKDESC)
  2683.         INTEGER NODE,TKDESC
  2684.  
  2685.         INTEGER DUMMY(2)
  2686.  
  2687. C---------------------------------------------------------
  2688. C    TOOLPACK/1    Release: 2.5
  2689. C---------------------------------------------------------
  2690. C
  2691. C  TKLAST = LAST TOKEN NUMBER
  2692. C
  2693.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2694.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2695.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2696.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2697.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2698.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2699.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2700.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2701.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2702.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2703.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2704.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2705.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2706.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2707.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2708.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2709.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2710.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2711.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2712.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2713.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2714.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2715.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2716.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2717.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2718.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2719.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2720.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2721.  
  2722.  
  2723.         SAVE DUMMY
  2724.  
  2725.         EXTERNAL YLIST,YLEAF,YEXPR,ZTOKWR
  2726.  
  2727. C---------------------------------------------------------
  2728. C    TOOLPACK/1    Release: 2.5
  2729. C---------------------------------------------------------
  2730. C
  2731. C Common block and access functions for YP parse tree
  2732. C
  2733. C---------------------------------------------------------
  2734. C    TOOLPACK/1    Release: 2.5
  2735. C---------------------------------------------------------
  2736.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2737.         INTEGER ROOT,TREE(4,46339),TRETOP
  2738.  
  2739.         SAVE /XCTREE/
  2740. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2741.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2742.  
  2743.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2744.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2745.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2746.         DOWN(JABC12)=TREE(2,JABC12)
  2747.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2748.         NATTR(JABC12)=TREE(4,JABC12)
  2749.  
  2750.         DATA DUMMY(1)/129/
  2751.  
  2752.         CALL ZTOKWR(TGOTO,0,DUMMY,TKDESC)
  2753.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  2754.         CALL YLIST(YLEAF,DOWN(NODE),TKDESC)
  2755.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  2756.         CALL YEXPR(NEXT(NODE),TKDESC)
  2757.  
  2758.         END
  2759. C ----------------------------------------------------------------------
  2760. C
  2761. C       X Y A S G O   -   Output an assigned GOTO
  2762. C
  2763.  
  2764.         SUBROUTINE XYASGO(NODE,TKDESC)
  2765.         INTEGER NODE,TKDESC
  2766.  
  2767.         INTEGER DUMMY(2),PTR
  2768.  
  2769. C---------------------------------------------------------
  2770. C    TOOLPACK/1    Release: 2.5
  2771. C---------------------------------------------------------
  2772. C
  2773. C  TKLAST = LAST TOKEN NUMBER
  2774. C
  2775.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2776.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2777.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2778.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2779.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2780.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2781.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2782.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2783.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2784.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2785.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2786.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2787.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2788.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2789.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2790.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2791.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2792.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2793.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2794.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2795.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2796.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2797.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2798.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2799.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2800.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2801.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2802.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2803.  
  2804.  
  2805.         SAVE DUMMY
  2806.  
  2807.         EXTERNAL YLIST,YLEAF,ZTOKWR
  2808.  
  2809. C---------------------------------------------------------
  2810. C    TOOLPACK/1    Release: 2.5
  2811. C---------------------------------------------------------
  2812. C
  2813. C Common block and access functions for YP parse tree
  2814. C
  2815. C---------------------------------------------------------
  2816. C    TOOLPACK/1    Release: 2.5
  2817. C---------------------------------------------------------
  2818.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2819.         INTEGER ROOT,TREE(4,46339),TRETOP
  2820.  
  2821.         SAVE /XCTREE/
  2822. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2823.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2824.  
  2825.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2826.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2827.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2828.         DOWN(JABC12)=TREE(2,JABC12)
  2829.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2830.         NATTR(JABC12)=TREE(4,JABC12)
  2831.  
  2832.         DATA DUMMY(1)/129/
  2833.  
  2834.         CALL ZTOKWR(TGOTO,0,DUMMY,TKDESC)
  2835.         CALL YLEAF(NODE,TKDESC)
  2836.         PTR=NEXT(NODE)
  2837.         IF (PTR.NE.0) THEN
  2838.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  2839.             CALL YLIST(YLEAF,DOWN(PTR),TKDESC)
  2840.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  2841.         END IF
  2842.  
  2843.         END
  2844. C ----------------------------------------------------------------------
  2845. C
  2846. C       X Y I F   -   Handles all IF/ELSEIF statements except logical IF
  2847. C
  2848.  
  2849.         SUBROUTINE XYIF(NODE,TKDESC)
  2850.         INTEGER NODE,TKDESC
  2851.  
  2852. C---------------------------------------------------------
  2853. C    TOOLPACK/1    Release: 2.5
  2854. C---------------------------------------------------------
  2855. C
  2856. C  TKLAST = LAST TOKEN NUMBER
  2857. C
  2858.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2859.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2860.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2861.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2862.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2863.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2864.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2865.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2866.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2867.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2868.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2869.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2870.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2871.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2872.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2873.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2874.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2875.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2876.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2877.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2878.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2879.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2880.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2881.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2882.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2883.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2884.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2885.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2886.  
  2887.  
  2888.         INTEGER DUMMY(2),NODTYP
  2889.  
  2890.         SAVE DUMMY
  2891.  
  2892.         EXTERNAL ZTOKWR,YLEAF,YLIST
  2893.  
  2894. C---------------------------------------------------------
  2895. C    TOOLPACK/1    Release: 2.5
  2896. C---------------------------------------------------------
  2897. C
  2898. C Common block and access functions for YP parse tree
  2899. C
  2900. C---------------------------------------------------------
  2901. C    TOOLPACK/1    Release: 2.5
  2902. C---------------------------------------------------------
  2903.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2904.         INTEGER ROOT,TREE(4,46339),TRETOP
  2905.  
  2906.         SAVE /XCTREE/
  2907. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2908.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  2909.  
  2910.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  2911.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  2912.         UP(JABC12)=(TREE(1,JABC12)/46340)
  2913.         DOWN(JABC12)=TREE(2,JABC12)
  2914.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  2915.         NATTR(JABC12)=TREE(4,JABC12)
  2916.  
  2917.         DATA DUMMY(1)/129/
  2918.  
  2919.         NODTYP=NTYPE(UP(NODE))
  2920.         IF (NODTYP.EQ.58) THEN
  2921.             CALL ZTOKWR(TELSIF,0,DUMMY,TKDESC)
  2922.         ELSE
  2923.             CALL ZTOKWR(TIF,0,DUMMY,TKDESC)
  2924.         END IF
  2925.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  2926.         CALL YEXPR(NODE,TKDESC)
  2927.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  2928.         IF (NODTYP.EQ.55) THEN
  2929.             CALL YLIST(YLEAF,NEXT(NODE),TKDESC)
  2930.         ELSE
  2931.             CALL ZTOKWR(TTHEN,0,DUMMY,TKDESC)
  2932.         END IF
  2933.  
  2934.         END
  2935. C ----------------------------------------------------------------------
  2936. C
  2937. C       X Y W R I T  -  Output a WRITE statement
  2938. C
  2939.  
  2940.         SUBROUTINE XYWRIT(NODE,TKDESC)
  2941.         INTEGER NODE,TKDESC
  2942.  
  2943. C---------------------------------------------------------
  2944. C    TOOLPACK/1    Release: 2.5
  2945. C---------------------------------------------------------
  2946. C
  2947. C  TKLAST = LAST TOKEN NUMBER
  2948. C
  2949.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  2950.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  2951.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  2952.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  2953.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  2954.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  2955.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  2956.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  2957.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  2958.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  2959.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  2960.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  2961.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  2962.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  2963.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  2964.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  2965.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  2966.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  2967.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  2968.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  2969.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  2970.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  2971.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  2972.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  2973.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  2974.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  2975.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  2976.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  2977.  
  2978.  
  2979.         INTEGER PTR,DUMMY(2)
  2980.  
  2981.         SAVE DUMMY
  2982.  
  2983.         EXTERNAL ZTOKWR,YLIST,XYCII
  2984.  
  2985. C---------------------------------------------------------
  2986. C    TOOLPACK/1    Release: 2.5
  2987. C---------------------------------------------------------
  2988. C
  2989. C Common block and access functions for YP parse tree
  2990. C
  2991. C---------------------------------------------------------
  2992. C    TOOLPACK/1    Release: 2.5
  2993. C---------------------------------------------------------
  2994.         COMMON/XCTREE/ROOT,TREE,TRETOP
  2995.         INTEGER ROOT,TREE(4,46339),TRETOP
  2996.  
  2997.         SAVE /XCTREE/
  2998. C Use "JABC12" to try to avoid conflicts with ordinary variables
  2999.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3000.  
  3001.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3002.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3003.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3004.         DOWN(JABC12)=TREE(2,JABC12)
  3005.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3006.         NATTR(JABC12)=TREE(4,JABC12)
  3007.  
  3008.         DATA DUMMY(1)/129/
  3009.  
  3010.         CALL ZTOKWR(TWRITE,0,DUMMY,TKDESC)
  3011.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  3012.         PTR=NODE
  3013.         IF (NTYPE(PTR).EQ.122) THEN
  3014.             CALL YEXPR(DOWN(PTR),TKDESC)
  3015.         ELSE
  3016.             CALL YLIST(XYCII,DOWN(PTR),TKDESC)
  3017.         END IF
  3018.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  3019.         PTR=NEXT(NODE)
  3020.         IF (PTR.NE.0) CALL XYIOL(PTR,TKDESC)
  3021.  
  3022.         END
  3023. C ----------------------------------------------------------------------
  3024. C
  3025. C       X Y P R I N   -   Output a PRINT statement
  3026. C
  3027.  
  3028.         SUBROUTINE XYPRIN(NODE,TKDESC)
  3029.         INTEGER NODE,TKDESC
  3030.  
  3031. C---------------------------------------------------------
  3032. C    TOOLPACK/1    Release: 2.5
  3033. C---------------------------------------------------------
  3034. C
  3035. C  TKLAST = LAST TOKEN NUMBER
  3036. C
  3037.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  3038.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  3039.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  3040.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  3041.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  3042.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  3043.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  3044.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  3045.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  3046.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  3047.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  3048.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  3049.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  3050.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  3051.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  3052.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  3053.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  3054.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  3055.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  3056.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  3057.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  3058.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  3059.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  3060.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  3061.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  3062.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  3063.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  3064.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  3065.  
  3066.  
  3067.         INTEGER DUMMY(2),PTR
  3068.  
  3069.         SAVE DUMMY
  3070.  
  3071.         EXTERNAL ZTOKWR
  3072.  
  3073. C---------------------------------------------------------
  3074. C    TOOLPACK/1    Release: 2.5
  3075. C---------------------------------------------------------
  3076. C
  3077. C Common block and access functions for YP parse tree
  3078. C
  3079. C---------------------------------------------------------
  3080. C    TOOLPACK/1    Release: 2.5
  3081. C---------------------------------------------------------
  3082.         COMMON/XCTREE/ROOT,TREE,TRETOP
  3083.         INTEGER ROOT,TREE(4,46339),TRETOP
  3084.  
  3085.         SAVE /XCTREE/
  3086. C Use "JABC12" to try to avoid conflicts with ordinary variables
  3087.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3088.  
  3089.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3090.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3091.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3092.         DOWN(JABC12)=TREE(2,JABC12)
  3093.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3094.         NATTR(JABC12)=TREE(4,JABC12)
  3095.  
  3096.         DATA DUMMY(1)/129/
  3097.  
  3098.         CALL ZTOKWR(TPRINT,0,DUMMY,TKDESC)
  3099.         CALL YEXPR(DOWN(NODE),TKDESC)
  3100.         PTR=NEXT(NODE)
  3101.         IF (PTR.NE.0) THEN
  3102.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  3103.             CALL XYIOL(PTR,TKDESC)
  3104.         END IF
  3105.  
  3106.         END
  3107. C ----------------------------------------------------------------------
  3108. C
  3109. C       X Y A U X   -   Output an auxiliary i/o statement
  3110. C
  3111.  
  3112.         SUBROUTINE XYAUX(NODE,TKDESC)
  3113.         INTEGER NODE,TKDESC
  3114.  
  3115. C---------------------------------------------------------
  3116. C    TOOLPACK/1    Release: 2.5
  3117. C---------------------------------------------------------
  3118. C
  3119. C  TKLAST = LAST TOKEN NUMBER
  3120. C
  3121.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  3122.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  3123.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  3124.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  3125.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  3126.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  3127.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  3128.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  3129.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  3130.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  3131.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  3132.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  3133.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  3134.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  3135.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  3136.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  3137.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  3138.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  3139.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  3140.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  3141.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  3142.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  3143.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  3144.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  3145.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  3146.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  3147.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  3148.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  3149.  
  3150.  
  3151.         INTEGER DUMMY(2),NODTYP,TOKTYP
  3152.  
  3153.         SAVE DUMMY
  3154.  
  3155.         EXTERNAL ZTOKWR,YLIST,XYCII,ERROR
  3156.  
  3157. C---------------------------------------------------------
  3158. C    TOOLPACK/1    Release: 2.5
  3159. C---------------------------------------------------------
  3160. C
  3161. C Common block and access functions for YP parse tree
  3162. C
  3163. C---------------------------------------------------------
  3164. C    TOOLPACK/1    Release: 2.5
  3165. C---------------------------------------------------------
  3166.         COMMON/XCTREE/ROOT,TREE,TRETOP
  3167.         INTEGER ROOT,TREE(4,46339),TRETOP
  3168.  
  3169.         SAVE /XCTREE/
  3170. C Use "JABC12" to try to avoid conflicts with ordinary variables
  3171.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3172.  
  3173.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3174.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3175.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3176.         DOWN(JABC12)=TREE(2,JABC12)
  3177.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3178.         NATTR(JABC12)=TREE(4,JABC12)
  3179.  
  3180.         DATA DUMMY(1)/129/
  3181.  
  3182.         NODTYP=NTYPE(UP(NODE))
  3183.         IF (NODTYP.EQ.75) THEN
  3184.             TOKTYP=TBACKS
  3185.         ELSE IF (NODTYP.EQ.76) THEN
  3186.             TOKTYP=TENDFI
  3187.         ELSE IF (NODTYP.EQ.77) THEN
  3188.             TOKTYP=TREWIN
  3189.         ELSE IF (NODTYP.EQ.72) THEN
  3190.             TOKTYP=TOPEN
  3191.         ELSE IF (NODTYP.EQ.73) THEN
  3192.             TOKTYP=TCLOSE
  3193.         ELSE IF (NODTYP.EQ.74) THEN
  3194.             TOKTYP=TINQUI
  3195.         ELSE
  3196.             CALL ERROR('Invalid call to XYAUX')
  3197.         END IF
  3198.         CALL ZTOKWR(TOKTYP,0,DUMMY,TKDESC)
  3199.         IF (NTYPE(NODE).EQ.122) THEN
  3200.             CALL YEXPR(DOWN(NODE),TKDESC)
  3201.         ELSE
  3202.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  3203.             CALL YLIST(XYCII,DOWN(NODE),TKDESC)
  3204.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  3205.         END IF
  3206.  
  3207.         END
  3208. C ----------------------------------------------------------------------
  3209. C
  3210. C       X Y R E A D   -   Output a READ statement
  3211. C
  3212.  
  3213.         SUBROUTINE XYREAD(NODE,TKDESC)
  3214.         INTEGER NODE,TKDESC
  3215.  
  3216. C---------------------------------------------------------
  3217. C    TOOLPACK/1    Release: 2.5
  3218. C---------------------------------------------------------
  3219. C
  3220. C  TKLAST = LAST TOKEN NUMBER
  3221. C
  3222.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  3223.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  3224.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  3225.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  3226.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  3227.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  3228.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  3229.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  3230.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  3231.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  3232.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  3233.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  3234.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  3235.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  3236.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  3237.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  3238.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  3239.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  3240.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  3241.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  3242.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  3243.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  3244.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  3245.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  3246.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  3247.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  3248.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  3249.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  3250.  
  3251.  
  3252.         INTEGER DUMMY(2)
  3253.  
  3254.         SAVE DUMMY
  3255.  
  3256.         EXTERNAL ZTOKWR,YLIST,XYCII
  3257.  
  3258. C---------------------------------------------------------
  3259. C    TOOLPACK/1    Release: 2.5
  3260. C---------------------------------------------------------
  3261. C
  3262. C Common block and access functions for YP parse tree
  3263. C
  3264. C---------------------------------------------------------
  3265. C    TOOLPACK/1    Release: 2.5
  3266. C---------------------------------------------------------
  3267.         COMMON/XCTREE/ROOT,TREE,TRETOP
  3268.         INTEGER ROOT,TREE(4,46339),TRETOP
  3269.  
  3270.         SAVE /XCTREE/
  3271. C Use "JABC12" to try to avoid conflicts with ordinary variables
  3272.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3273.  
  3274.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3275.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3276.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3277.         DOWN(JABC12)=TREE(2,JABC12)
  3278.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3279.         NATTR(JABC12)=TREE(4,JABC12)
  3280.  
  3281.         DATA DUMMY(1)/129/
  3282.  
  3283.         CALL ZTOKWR(TREAD,0,DUMMY,TKDESC)
  3284.         IF (NTYPE(NODE).EQ.124) THEN
  3285.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  3286.             CALL YEXPR(DOWN(NODE),TKDESC)
  3287.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  3288.         ELSE
  3289.             IF (NTYPE(NODE).EQ.123) THEN
  3290.                 CALL YEXPR(DOWN(NODE),TKDESC)
  3291.                 IF (NEXT(NODE).NE.0)
  3292.      +              CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  3293.             ELSE
  3294.                 CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  3295.                 CALL YLIST(XYCII,DOWN(NODE),TKDESC)
  3296.                 CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  3297.             END IF
  3298.             IF (NEXT(NODE).NE.0)
  3299.      +          CALL XYIOL(NEXT(NODE),TKDESC)
  3300.         END IF
  3301.  
  3302.         END
  3303. C ----------------------------------------------------------------------
  3304. C
  3305. C       X Y I O L   -   Output an i/o list
  3306. C
  3307.  
  3308.         SUBROUTINE XYIOL(NODE,TKDESC)
  3309.         INTEGER NODE,TKDESC
  3310.  
  3311. C---------------------------------------------------------
  3312. C    TOOLPACK/1    Release: 2.5
  3313. C---------------------------------------------------------
  3314. C
  3315. C  TKLAST = LAST TOKEN NUMBER
  3316. C
  3317.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  3318.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  3319.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  3320.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  3321.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  3322.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  3323.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  3324.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  3325.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  3326.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  3327.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  3328.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  3329.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  3330.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  3331.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  3332.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  3333.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  3334.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  3335.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  3336.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  3337.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  3338.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  3339.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  3340.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  3341.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  3342.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  3343.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  3344.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  3345.  
  3346.  
  3347.         INTEGER DUMMY(2),PTR,NODTYP,NEXTX,ENDNOD
  3348.  
  3349.         SAVE DUMMY
  3350.  
  3351.         EXTERNAL ZTOKWR
  3352.  
  3353. C---------------------------------------------------------
  3354. C    TOOLPACK/1    Release: 2.5
  3355. C---------------------------------------------------------
  3356. C
  3357. C Common block and access functions for YP parse tree
  3358. C
  3359. C---------------------------------------------------------
  3360. C    TOOLPACK/1    Release: 2.5
  3361. C---------------------------------------------------------
  3362.         COMMON/XCTREE/ROOT,TREE,TRETOP
  3363.         INTEGER ROOT,TREE(4,46339),TRETOP
  3364.  
  3365.         SAVE /XCTREE/
  3366. C Use "JABC12" to try to avoid conflicts with ordinary variables
  3367.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3368.  
  3369.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3370.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3371.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3372.         DOWN(JABC12)=TREE(2,JABC12)
  3373.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3374.         NATTR(JABC12)=TREE(4,JABC12)
  3375.  
  3376.         DATA DUMMY(1)/129/
  3377.  
  3378.         ENDNOD=UP(NODE)
  3379.         PTR=NODE
  3380.  
  3381.  100    NODTYP=NTYPE(PTR)
  3382.         IF (NODTYP.EQ.71) THEN
  3383.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  3384.             PTR=DOWN(PTR)
  3385.             GOTO 100
  3386.         ELSE IF (NODTYP.EQ.48) THEN
  3387.             CALL XYDOSP(PTR,TKDESC)
  3388.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  3389.             PTR=UP(PTR)
  3390.         ELSE
  3391.             CALL YEXPR(PTR,TKDESC)
  3392.         END IF
  3393.  
  3394.  200    IF (PTR.EQ.ENDNOD) RETURN
  3395.         NEXTX=NEXT(PTR)
  3396.         IF (NEXTX.NE.0) THEN
  3397.             CALL ZTOKWR(TCOMMA,0,DUMMY,TKDESC)
  3398.             PTR=NEXTX
  3399.             GO TO 100
  3400.         END IF
  3401.         PTR=UP(PTR)
  3402.         GO TO 200
  3403.  
  3404.         END
  3405. C ----------------------------------------------------------------------
  3406. C
  3407. C       X Y C I I   -   Output a control_info_list item
  3408. C
  3409.  
  3410.         SUBROUTINE XYCII(NODE,TKDESC)
  3411.         INTEGER NODE,TKDESC
  3412.  
  3413. C---------------------------------------------------------
  3414. C    TOOLPACK/1    Release: 2.5
  3415. C---------------------------------------------------------
  3416. C
  3417. C  TKLAST = LAST TOKEN NUMBER
  3418. C
  3419.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  3420.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  3421.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  3422.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  3423.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  3424.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  3425.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  3426.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  3427.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  3428.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  3429.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  3430.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  3431.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  3432.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  3433.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  3434.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  3435.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  3436.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  3437.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  3438.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  3439.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  3440.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  3441.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  3442.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  3443.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  3444.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  3445.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  3446.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  3447.  
  3448.  
  3449.         INTEGER DUMMY(2),FMTTXT(4),NODTYP,PTR
  3450.  
  3451.         SAVE DUMMY,FMTTXT
  3452.  
  3453.         EXTERNAL ZTOKWR
  3454.  
  3455. C---------------------------------------------------------
  3456. C    TOOLPACK/1    Release: 2.5
  3457. C---------------------------------------------------------
  3458. C
  3459. C Common block and access functions for YP parse tree
  3460. C
  3461. C---------------------------------------------------------
  3462. C    TOOLPACK/1    Release: 2.5
  3463. C---------------------------------------------------------
  3464.         COMMON/XCTREE/ROOT,TREE,TRETOP
  3465.         INTEGER ROOT,TREE(4,46339),TRETOP
  3466.  
  3467.         SAVE /XCTREE/
  3468. C Use "JABC12" to try to avoid conflicts with ordinary variables
  3469.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3470.  
  3471.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3472.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3473.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3474.         DOWN(JABC12)=TREE(2,JABC12)
  3475.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3476.         NATTR(JABC12)=TREE(4,JABC12)
  3477.  
  3478.         DATA DUMMY(1)/129/,FMTTXT/70,77,84,129/
  3479.  
  3480.         NODTYP=NTYPE(NODE)
  3481.         IF (NODTYP.EQ.122) THEN
  3482.             PTR=DOWN(NODE)
  3483.         ELSE IF (NODTYP.EQ.123) THEN
  3484.             CALL ZTOKWR(TFMTKD,3,FMTTXT,TKDESC)
  3485.             CALL ZTOKWR(TEQUAL,0,DUMMY,TKDESC)
  3486.             PTR=DOWN(NODE)
  3487.         ELSE
  3488.             CALL YLEAF(DOWN(NODE),TKDESC)
  3489.             CALL ZTOKWR(TEQUAL,0,DUMMY,TKDESC)
  3490.             PTR=NEXT(DOWN(NODE))
  3491.         END IF
  3492.         CALL YEXPR(PTR,TKDESC)
  3493.  
  3494.         END
  3495. C ----------------------------------------------------------------------
  3496. C
  3497. C       X Y S U B R    -   Output a SUBROUTINE statement
  3498. C
  3499.  
  3500.         SUBROUTINE XYSUBR(NODE,TKDESC)
  3501.         INTEGER NODE,TKDESC
  3502.  
  3503. C---------------------------------------------------------
  3504. C    TOOLPACK/1    Release: 2.5
  3505. C---------------------------------------------------------
  3506. C
  3507. C  TKLAST = LAST TOKEN NUMBER
  3508. C
  3509.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  3510.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  3511.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  3512.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  3513.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  3514.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  3515.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  3516.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  3517.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  3518.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  3519.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  3520.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  3521.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  3522.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  3523.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  3524.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  3525.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  3526.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  3527.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  3528.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  3529.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  3530.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  3531.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  3532.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  3533.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  3534.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  3535.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  3536.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  3537.  
  3538.  
  3539.         INTEGER DUMMY(2),PTR
  3540.  
  3541.         SAVE DUMMY
  3542.  
  3543.         EXTERNAL ZTOKWR,YLIST,YLEAF
  3544.  
  3545. C---------------------------------------------------------
  3546. C    TOOLPACK/1    Release: 2.5
  3547. C---------------------------------------------------------
  3548. C
  3549. C Common block and access functions for YP parse tree
  3550. C
  3551. C---------------------------------------------------------
  3552. C    TOOLPACK/1    Release: 2.5
  3553. C---------------------------------------------------------
  3554.         COMMON/XCTREE/ROOT,TREE,TRETOP
  3555.         INTEGER ROOT,TREE(4,46339),TRETOP
  3556.  
  3557.         SAVE /XCTREE/
  3558. C Use "JABC12" to try to avoid conflicts with ordinary variables
  3559.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3560.  
  3561.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3562.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3563.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3564.         DOWN(JABC12)=TREE(2,JABC12)
  3565.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3566.         NATTR(JABC12)=TREE(4,JABC12)
  3567.  
  3568.         DATA DUMMY(1)/129/
  3569.  
  3570.         CALL ZTOKWR(TSUBRO,0,DUMMY,TKDESC)
  3571.         CALL YLEAF(NODE,TKDESC)
  3572.         PTR=NEXT(NODE)
  3573.         IF (PTR.NE.0) THEN
  3574.             CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  3575.             CALL YLIST(YLEAF,DOWN(PTR),TKDESC)
  3576.             CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  3577.         END IF
  3578.  
  3579.         END
  3580. C ----------------------------------------------------------------------
  3581. C
  3582. C       X Y F U N C    -   Output a FUNCTION statement
  3583. C
  3584.  
  3585.         SUBROUTINE XYFUNC(NODE,TKDESC)
  3586.         INTEGER NODE,TKDESC
  3587.  
  3588. C---------------------------------------------------------
  3589. C    TOOLPACK/1    Release: 2.5
  3590. C---------------------------------------------------------
  3591. C
  3592. C  TKLAST = LAST TOKEN NUMBER
  3593. C
  3594.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  3595.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  3596.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  3597.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  3598.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  3599.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  3600.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  3601.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  3602.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  3603.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  3604.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  3605.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  3606.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  3607.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  3608.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  3609.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  3610.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  3611.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  3612.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  3613.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  3614.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  3615.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  3616.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  3617.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  3618.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  3619.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  3620.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  3621.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  3622.  
  3623.  
  3624.         INTEGER DUMMY(2),PTR
  3625.  
  3626.         SAVE DUMMY
  3627.  
  3628.         EXTERNAL ZTOKWR,YLIST,YLEAF
  3629.  
  3630. C---------------------------------------------------------
  3631. C    TOOLPACK/1    Release: 2.5
  3632. C---------------------------------------------------------
  3633. C
  3634. C Common block and access functions for YP parse tree
  3635. C
  3636. C---------------------------------------------------------
  3637. C    TOOLPACK/1    Release: 2.5
  3638. C---------------------------------------------------------
  3639.         COMMON/XCTREE/ROOT,TREE,TRETOP
  3640.         INTEGER ROOT,TREE(4,46339),TRETOP
  3641.  
  3642.         SAVE /XCTREE/
  3643. C Use "JABC12" to try to avoid conflicts with ordinary variables
  3644.         INTEGER NEXT,PREV,UP,DOWN,NATTR,NTYPE,JABC12
  3645.  
  3646.         NEXT(JABC12)=MOD(TREE(3,JABC12),46340)
  3647.         PREV(JABC12)=(TREE(3,JABC12)/46340)
  3648.         UP(JABC12)=(TREE(1,JABC12)/46340)
  3649.         DOWN(JABC12)=TREE(2,JABC12)
  3650.         NTYPE(JABC12)=MOD(TREE(1,JABC12),46340)
  3651.         NATTR(JABC12)=TREE(4,JABC12)
  3652.  
  3653.         DATA DUMMY(1)/129/
  3654.  
  3655.         IF (NTYPE(NODE).NE.108) THEN
  3656.             CALL YTYPE(NODE,TKDESC)
  3657.             PTR=NEXT(NODE)
  3658.         ELSE
  3659.             PTR=NODE
  3660.         END IF
  3661.         CALL ZTOKWR(TFUNCT,0,DUMMY,TKDESC)
  3662.         CALL YLEAF(PTR,TKDESC)
  3663.         PTR=DOWN(NEXT(PTR))
  3664.         CALL ZTOKWR(TLPARN,0,DUMMY,TKDESC)
  3665.         IF (PTR.NE.0) CALL YLIST(YLEAF,PTR,TKDESC)
  3666.         CALL ZTOKWR(TRPARN,0,DUMMY,TKDESC)
  3667.  
  3668.         END
  3669.